暂无图片
暂无图片
6
暂无图片
暂无图片
3
暂无图片

错误执行计划导致主机内存资源耗尽

原创 李先生 2023-06-21
1157

[[toc]]

报告概述

调度系统在下午17点30分左右数据库所在主机内存几乎耗尽,操作系统卡慢,数据库无法正常。

故障发生后,及时的进行数据库分析,与客户沟通后,直接对数据库一二节点的应用会话的外部链接进程全部kill掉,使得逐渐内存得到释放,操作系统正常运行,数据库运行恢复。

经进一步分析,故障原因是数据库IO存在瓶颈,有一条SQL的执行计划有异常,有着大量的直接路径读,导致系统IO异常突增,使得操作系统负载高,整体变慢,应用进程执行缓慢,得不到及时释放,最终进程过高,内存消耗殆尽。

为避免问题再次发生,做出以下建议:

a. 改善主机的IO,消除数据库的IO瓶颈。

b. 数据库收集统计信息需要谨慎,收集之后应该观察执行计划是否有改变。

故障现象

综合调度系统在下午17点30分左右数据库所在主机内存几乎耗尽,操作系统卡慢,数据库无法正常。

处理过程

经过登陆数据库主机,执行操作系统命令异常缓慢,系统的物理内存几乎耗尽,与客户沟通后,直接把数据库一二节点的外部会话链接杀掉。

ps –ef | grep “LOCAL=NO” | grep -v root | awk '{print $2}' | xargs kill -9
复制

观察内存逐渐得到释放,操作系统缓慢恢复,数据库恢复正常。

故障分析

由于看到的现象就是操作系统的内存资源耗尽,所以内存的使用情况进行分析。

OSW资源分析

取到了操作系统上部署的OSW自动采集工具的文本进行查看:

zzz ***Thu Nov 15 17:27:24 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 15 0 12706004 2018037 0 0 0 0 0 0 2568 253251 11162 32 3 60 6 7 0 12703983 2020046 0 0 0 0 0 0 2174 209279 9708 26 2 65 7 4 0 12714526 2009495 0 0 0 0 0 0 2854 258572 12205 23 2 66 9 zzz ***Thu Nov 15 17:27:54 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 7 0 12709640 2013981 0 0 0 0 0 0 2741 221048 11461 29 3 63 5 8 0 12704960 2018639 0 0 0 0 0 0 3276 129008 12563 26 2 65 7 7 0 12709513 2014057 0 0 0 0 0 0 2796 344631 11579 24 2 66 8 zzz ***Thu Nov 15 17:28:24 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 12787873 1935470 0 0 0 0 0 0 1346 164238 10225 11 2 83 4 2 0 12790290 1933048 0 0 0 0 0 0 586 144908 9312 8 1 87 4 2 0 12791636 1931696 0 0 0 0 0 0 329 212270 9139 8 1 89 1 zzz ***Thu Nov 15 17:28:54 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 4 0 12948266 1775004 0 0 0 0 0 0 1430 252445 11602 13 2 84 2 5 0 12953058 1770197 0 0 0 0 0 0 1850 219531 12815 22 1 75 2 8 0 12950343 1772905 0 0 0 0 0 0 2445 237655 13927 27 2 69 2 zzz ***Thu Nov 15 17:29:24 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 2 0 13055729 1667271 0 0 0 0 0 0 217 170862 11758 5 2 93 0 1 0 13055737 1667258 0 0 0 0 0 0 233 243881 12383 4 1 95 0 0 0 13059484 1663506 0 0 0 0 0 0 195 204636 13241 3 1 96 0 zzz ***Thu Nov 15 17:29:55 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 5 0 13207572 1515314 0 0 0 0 0 0 692 180121 14664 8 2 87 3 1 0 13225362 1497518 0 0 0 0 0 0 2307 213432 18264 18 2 70 10 4 0 13226350 1496524 0 0 0 0 0 0 2934 351252 19161 24 3 65 8 zzz ***Thu Nov 15 17:30:25 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 6 0 13402820 1319750 0 0 0 0 0 0 1342 207778 13958 22 3 74 2 0 0 13405784 1316771 0 0 0 0 0 0 222 158549 11968 10 1 89 0 4 0 13408418 1314122 0 0 0 0 0 0 211 156571 12875 6 1 94 0 zzz ***Thu Nov 15 17:30:55 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 2 0 13709277 1013208 0 0 0 0 0 0 185 231316 13343 6 2 92 0 1 0 13712618 1009862 0 0 0 0 0 0 90 122288 13469 3 1 96 0 0 0 13728756 993716 0 0 0 0 0 0 136 211737 14142 5 2 94 0 zzz ***Thu Nov 15 17:31:25 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 2 0 13828262 893982 0 0 0 0 0 0 358 185398 14677 5 2 93 0 2 0 13829269 892967 0 0 0 0 0 0 201 210391 14801 8 1 91 0 4 0 13834211 888021 0 0 0 0 0 0 277 231645 15843 6 1 93 0 zzz ***Thu Nov 15 17:31:55 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 0 13879731 842414 0 0 0 0 0 0 184 163449 13061 4 1 94 0 3 0 13885054 837083 0 0 0 0 0 0 646 218755 14317 4 1 94 0 4 0 13893902 828230 0 0 0 0 0 0 399 150483 14314 6 1 93 0 zzz ***Thu Nov 15 17:32:55 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 0 14109464 612420 0 0 0 0 0 0 174 254105 15527 9 2 89 0 2 0 14111214 610665 0 0 0 0 0 0 76 97320 16253 4 1 95 0 1 0 14111505 610368 0 0 0 0 0 0 194 182452 16077 3 1 97 0 zzz ***Thu Nov 15 17:33:25 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 2 0 14336061 385687 0 0 0 0 0 0 204 219870 17621 6 2 92 0 2 0 14346304 375436 0 0 0 0 0 0 180 170415 18348 4 1 95 0 0 0 14361082 360653 0 0 0 0 0 0 193 170724 17847 5 1 94 0 zzz ***Thu Nov 15 17:33:55 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 4 0 14679783 115137 0 0 0 0 0 0 1605 238353 23972 11 3 85 1 2 0 14679881 115034 0 0 0 0 0 0 1139 201143 23531 5 1 93 1 5 0 14679900 115010 0 0 0 0 0 0 510 210052 21427 3 1 95 0 zzz ***Thu Nov 15 17:34:25 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 2 0 14925277 25922 0 0 0 4645515792190799872 4645498200004755456 0 162 232335 16747 4 2 94 0 5 0 14924895 26298 0 0 0 0 0 0 144 144804 17234 3 1 96 0 6 0 14937142 22743 0 0 0 4665995845525569536 4666298211223207936 0 290 178082 17103 6 1 93 0 zzz ***Thu Nov 15 17:34:56 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 2 0 15236102 22678 0 0 0 4669140448781008896 4669143197560078336 0 161 292615 21491 8 3 89 0 1 0 15242069 21854 0 0 0 4662373504467861504 4663022216328249344 0 133 241238 21710 5 1 94 0 0 0 15253893 21356 0 0 0 4667387239341417737 4667530570968731287 0 176 186173 21211 4 1 94 0 zzz ***Thu Nov 15 17:35:26 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 4 0 15461466 21187 0 4633218854145753088 4652420725213233152 4670832872054063104 4681101554743246848 0 384 191715 10876 6 2 92 0 0 0 15476110 20580 0 4630967956072499559 4652211025200916087 4669289593091626512 4680754774559923524 0 654 142786 11790 6 2 91 0 0 9 15499667 20356 0 4621255376110853943 4656853231906295894 4672424743348336005 4679955116924125749 0 1796 186805 11062 6 2 83 9 zzz ***Thu Nov 15 17:35:58 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 35 15728026 16023 0 4634338232124987421 4659954694859583197 4663915898487206993 4670043392210985119 0 2144 43118 7114 2 1 74 24 1 30 15728053 18762 0 4636314045510105735 4658392307704588811 4645497139141794489 4645725801831826580 0 2312 35701 8541 1 1 74 24 2 20 15745786 10801 0 4640009437958897664 4656383365119737856 4670819403036622848 4681038195385696256 0 1864 52938 19038 3 2 77 18 zzz ***Thu Nov 15 17:36:42 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 2 40 15983551 13854 0 4634415859584687097 4665165384255649891 4653807061777720188 4654409688310137126 0 3252 40375 6115 2 1 76 20 2 48 15998393 7731 0 4636666922610458624 4665270717607051264 4669274589199597568 4671209179908669440 0 3179 91778 7645 3 2 75 20 0 0 15997645 13967 0 4632233691727265792 4662432878095761408 0 0 0 4219 157114 8548 1 2 74 23 zzz ***Thu Nov 15 17:37:21 GMT+08:00 2018 System Configuration: lcpu=64 mem=63488MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 16206137 15603 0 4634554343433098633 4662502539937430493 4634483996672283723 4639233809962506402 0 3336 27940 6003 1 1 74 24 0 47 16220274 8215 0 4640931589916561397 4663407760863068949 4669389621454472024 4670102885121406582 0 2833 37756 8514 2 2 73 23 3 51 16226049 8017 0 4632091876885851658 4662895907331959307 4663335643274328711 4664018333324857212 0 4023 34611 12229 2 1 73 24
复制

从以上的OSW的vmstat日志可以看到在17点27分的时候,剩余内存为2GB。但是随着时间的变化,剩余内存也跟着变动。在17点37分时,剩余内存就已经只剩8M,根本难以支持操作系统的运行。

NMON分析

主机上部署的NMON分析结果:

image.png
image.png
使用到了大量的paging,pgin、pgout使用很高。

image.png
image.png
Swap in在故障时间点,由于内存不足,造成了Swap的使用,所以操作系统缓慢,数据库无法正常运行。

image.png
从这个图可以看出来,内存耗尽是最终现象,但是主要的根本原因还是因为IO的问题造成的,在17点30分的时候,IO突增。

AWR分析

​ 随后,我们对数据库的故障时间点进行的AWR的报告提取:
image.png
直接路径读对数据的读取达到了230G,对IO造成了很大的影响。

image.png
可以看到INF_MSG对象的操作使用到了直接路径读,占到了80%以上。

image.png

进一步查询具体SQL
image.png
image.png

SQL分析

SQL_ID:8nbwrf008vb7h

SELECT AA.* FROM (SELECT ID, ORDER_ID, WORK_ORDER_ID, IOM_WORK_ID, SRV_TYPE, COST_TIME, TRACE_ID, POINT_ID, PARENT_ID, DEAL_TIMES FROM INF_MSG WHERE STATE IN ('10I', '10E') AND DEAL_TIMES < :1 AND MOD(ID, :2) = :3 AND SYSTEM_FLAG = :4 ORDER BY STATE_DATE ASC) AA WHERE ROWNUM <= :5
复制

主机查看SQL的执行计划:
image.png
image.png
执行计划发生了改变,从索引范围扫描到了全表扫描。

索引分析

查看是否是索引失效

image.png
索引未失效

统计信息分析

查看统计信息收集情况

image.png
统计信息并没有失效

image.png
统计信息最后收集时间为15日11点10分

image.png
自动收集统计信息为disable状态,所以应该为人为收集的统计信息。

建议

为避免问题再次发生,做出以下建议:

a.改善主机的IO,消除数据库的IO瓶颈。

b.数据库收集统计信息需要谨慎,收集之后应该观察执行计划是否有改变。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

redgame
暂无图片
1年前
评论
暂无图片 0
1年前
暂无图片 点赞
评论
远行
暂无图片
1年前
评论
暂无图片 0
文章很有内容,以前也经常这方面的分析。
1年前
暂无图片 点赞
评论
redgame
暂无图片
1年前
评论
暂无图片 0
1年前
暂无图片 点赞
评论