资讯专栏INFORMATION COLUMN

故障处理之数据库节点实例异常重启

IT那活儿 / 2712人阅读
故障处理之数据库节点实例异常重启

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


故障现象

数据库节点3因大量高并发insert语句导致sql积压,从而短时间内消耗大量主机资源,对数据库性能产生了很大影响,严重影响数据库的正常运行,导致节点3数据库发生重启。

故障分析

2.1 20点28分左右,收到节点3大量sql积压短信告警,积压SQL主要为:9yy1zhgjvfbpj.

节点3:

2.2 登陆环境核查数据库实例状态及实例启动时间,20点36分确认数据库实例状态正常,且实例没有重启。当即对异常等待事件的sql进行查杀,但是由于应用还在不停的发起连接,在20点45分时节点3发生重启。

2.3 查看主机日志,并确认无异常报错信息。

节点3主机日志:

2.4 通过检查数据库运行状况时发现节点3上有大量sql积压的等待事件。

对应等待事件主要为:
  • enq:us-contention,rowcache local行缓存锁;

  • enq: IV - contention队列等待之询问IV。

附:

  • enq:us-contention

    这个等待事件有许多脱机撤消段,并且工作负载在短时间内开始联机许多撤消段。当使用具有自动调整的撤销保留期的系统管理撤销时,这可能会导致在DC_ROLLBACK_SEGMENTS上出现高“闩锁:行缓存对象”争用,同时出现高“enq:US-争用”等待。
  • rowcache local

    该是一个共享池相关的等待事件。是由于对于字典缓冲的访问造成的。每一个行缓冲队列锁都对应一个特定的数据字典对象,这被叫做队列锁类型,并可以在V$ROWCACHE视图中找到。在AWR中需要查看DictionaryCache Stats部分用以确定问题。
  • enq:IV - contention

    物化视图(mview)有两部分:

    1)保存数据的表;

    2)摘要对象。

    当提交mview基表上的DML时,summary对象将失效。这是必要的,因为mview可能需要用于查询重写。失效采用IV排队,直到summary对象在所有节点上失效为止。如果存在大量摘要无效,则会导致此排队上的争用。

2.5 通过核查节点3上sql积压等待事件对应的会话信息,定位到积压sql对应的sql_id,查到其sql文本就是一个insert语句。

节点3:

2.6 故障时间段节点3redo变化分析。

故障时间段每秒产生的redo量相比正常时间段增长了约180%。

故障时间段每秒产生redo量:

正常时间段每秒产生redo量:

2.7 查看会话变化情况发现从20点15分开始数据库会话开始突增。

2.8 通过分析故障时间段哪些SQL占用了资源,发现其中sql_id为9yy1zhgjvfbpj的语句占用了数据库48.24%的DBTIME。并最终于20:45分CPU资源耗尽导致实例重启。

9yy1zhgjvfbpj语句执行频次突增截图如下所示,11月2日故障时间段该sql执行频次上下浮动较大,而本次故障时间段该sql每分钟的执行频次持续保持在四千+,最高峰甚至达到1万+.

结论:sql_id为9yy1zhgjvfbpj的语句因高并发且频次突增,引发数据库序列及undo争用,消耗了大量的数据库资源,数据库主机最终CPU资源耗尽导致实例重启。

建议如下:
  • 建议一:应用连接降低并发,并查询到该SQL是单次commit,建议修改成批量提交。

  • 建议二:先将高并发insert写入内存库,然后在批量同步至核心库。

文章首发于2021年2月6日


本文作者:魏 斌(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129221.html

相关文章

  • 【独家】终生受用的Redis高可用技术解决方案大全

    摘要:哨兵是社区版本推出的原生高可用解决方案,部署架构主要包括两部分集群和数据集群,其中集群是由若干节点组成的分布式集群。自研推荐推荐自研的高可用解决方案,主要体现在配置中心故障探测和的处理机制上,通常需要根据企业业务的实际线上环境来定制化。 最近很多朋友向我咨询关于高可用的方案的优缺点以及如何选择合适的方案线上使用,刚好最近在给宜人贷,光大银行做企业内训的时候也详细讲过,这里我再整理发出来...

    cc17 评论0 收藏0
  • 【独家】终生受用的Redis高可用技术解决方案大全

    摘要:哨兵是社区版本推出的原生高可用解决方案,部署架构主要包括两部分集群和数据集群,其中集群是由若干节点组成的分布式集群。自研推荐推荐自研的高可用解决方案,主要体现在配置中心故障探测和的处理机制上,通常需要根据企业业务的实际线上环境来定制化。 最近很多朋友向我咨询关于高可用的方案的优缺点以及如何选择合适的方案线上使用,刚好最近在给宜人贷,光大银行做企业内训的时候也详细讲过,这里我再整理发出来...

    helloworldcoding 评论0 收藏0
  • 云计算节点故障自动化运维服务设计

    此文已由作者王盼授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验~ 现状计算节点发生磁盘损坏等数据无法恢复的异常时,节点上的云主机系统盘无法恢复,导致云主机只能被清理重建 计算节点宕机但磁盘数据可用时,重启即可恢复所有云主机的运行 计算节点多次宕机(或一段时间内频繁宕机),则需要迁移所有云主机或者直接清理重建,云硬盘需要迁移到其他cinder-volume存储服务节点 一般来...

    seanHai 评论0 收藏0
  • Akka系列(六):Actor解决了什么问题?

    摘要:原文链接解决了什么问题使用模型来克服传统面向对象编程模型的局限性,并应对高并发分布式系统所带来的挑战。在某些情况,这个问题可能会变得更糟糕,工作线程发生了错误但是其自身却无法恢复。 这段时间由于忙毕业前前后后的事情,拖更了很久,表示非常抱歉,回归后的第一篇文章主要是看到了Akka最新文档中写的What problems does the actor model solve?,阅读完后觉...

    Carson 评论0 收藏0
  • 从 Pods 和 Nodes 的出生入死详解 Kubernetes 的控制逻辑

    摘要:祈使式的脚本很难长期地对系统状态进行自动维护。这些事件包括的创建消亡的更新例如标签副本数量等。每当上述事件发生,这个事件所牵扯到的具体的对象就会被放入这个工作队列中。 本期文章来自才云科技(Caicloud)CEO 张鑫的技术原创。导言:Kubernetes 是一个庞大的软件系统,欲从源码层精通 Kubernetes 的进阶学习者往往会经历 Kubernetes:从入门到放弃 的挫败...

    yhaolpz 评论0 收藏0
  • 程序员都应该了解的运维知识经验

    摘要:负载均衡器又分为四层和七层负载均衡器,顾名思义,四层的工作在协议栈上,通过修改请求报文的源目的地址和源目的端口来转发,比如,一个主机对应一个域名,适用于每秒超过一万的业务。每一次变更都是一次发布,每一次发布都是一个独立的镜像启动 showImg(https://segmentfault.com/img/bVbvtgW?w=1080&h=720); 以一个经典问题抛砖引玉,当用户在浏览器...

    reclay 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<