暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

Oracle 诊断案例 :因应用死循环导致的CPU过高

原创 布衣&凡尘 2022-09-07
1031

背景

  从08月21号应用上了新功能以后,CPU idle time 从95%左右断崖式下降至75%左右,到08-30空闲恢复到90%左右,后面又开始降下来了,因为报警阀值为50%,所以一直也没有关注到。
  报警突然在上周六晚上23点左右报警低于50%,不过一会就恢复了,当时也没有太在意,因为知道这个点数据库有跑批任务,偶尔有CPU负载很正常(DBA的警觉,松懈了),后来在白天也开始断断续续的报了起来,自己才觉得不对劲。于是才打开电脑查看了下zabbix 监控报警如下图,发现了上述的现象,当时惊出一身汗啊,照这样下去,数据库服务器离挂不远了啊。
image.png

解决过程

  根据zabbix监控时间段生成了awr报告,DB CPU 占用数据库100%。
image.png
image.png

发现问题:

sql_id : 6pkaqzmtgz3za 1小时内执行了27,720,222次;
sql_id : cvaz34tbf38xn 1小时内执行了1,358,576次;
sql_id : d54w1bhvhsbmk 1小时内执行了1,358,555次;
sql_id : 6f8v7rj4xmzgp 1小时内执行了5,579,817次;
内心想法:这四条SQL这是要疯了差不多1s执行45万次,这是什么业务这么猛
image.png
  因为这4条SQL的单次耗时都是0.几秒,所以基本不用考虑SQL优化的问题。于是我把这4条SQL情况邮件扔给了开发人员,并提醒了一句:“请尽快解决,目前CPU负载50%-60%,可能会影响数据库的响应速度,随时有宕机的风险”,这句很关键。
  邮件发出去以后,引起了领导的重视,让开发尽快确认问题…(此次省备N个字)
  最终发现程序逻辑有个BUG,对处理过的数据状态未做修改,使程序重复处理相同的数据,造成了死循环。

修复后的CPU idle time 情况:

image.png

总结:

  作为DBA对监控的敏感度一定不能松懈,这次幸亏发现的早,一个逻辑死循环很容易把数据库跑死。AWR报告巡检每周最少一次,及时发现性能SQL,把问题及时掐灭在萌芽中。。。。第一次经验总结,希望自己能坚持下去。。。。
                         文章推荐

PostgreSQL URL
《课程笔记:PostgreSQL深入浅出》之 初识PostgreSQL(一) https://www.modb.pro/db/475817
《课程笔记:PostgreSQL深入浅出》之 PostgreSQL源码安装(二) https://www.modb.pro/db/475933
《课程笔记:PostgreSQL深入浅出》之初始化PostgreSQL(三) https://www.modb.pro/db/479524
《课程笔记:PostgreSQL深入浅出》之PSQL管理工具-常用(四) https://www.modb.pro/db/479560
《课程笔记:PostgreSQL深入浅出》之PSQL管理工具-高级命令(四) https://www.modb.pro/db/479559
《课程笔记:PostgreSQL深入浅出》之内存与进程(五) https://www.modb.pro/db/489936
《《课程笔记:PostgreSQL深入浅出》之外存&永久存储(六) https://www.modb.pro/db/502267
Oracle: URL
《Oracle 自动收集统计信息机制》 https://www.modb.pro/db/403670
《Oracle_索引重建—优化索引碎片》 https://www.modb.pro/db/399543
《DBA_TAB_MODIFICATIONS表的刷新策略测试》 https://www.modb.pro/db/414692
《FY_Recover_Data.dbf》 https://www.modb.pro/doc/74682
《Oracle RAC 集群迁移文件操作.pdf》 https://www.modb.pro/doc/72985
《Oracle Date 字段索引使用测试.dbf》 https://www.modb.pro/doc/72521
《Oracle 诊断案例 :因应用死循环导致的CPU过高》 https://www.modb.pro/db/483047
《Oracle 慢SQL监控脚本》 https://www.modb.pro/db/479620
《Oracle 慢SQL监控测试及监控脚本.pdf》 https://www.modb.pro/doc/76068
《Oracle 脚本实现简单的审计功能》 https://www.modb.pro/db/450052
Greenplum: URL
《PL/Java.pdf》 https://www.modb.pro/doc/70867
《GP的资源队列.pdf》 https://www.modb.pro/doc/67644
《Greenplum psql客户端免交互执行SQL.pdf》 https://www.modb.pro/doc/69806
                       欢迎赞赏支持或留言指正
最后修改时间:2022-09-27 21:28:44
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论