资讯专栏INFORMATION COLUMN

性能故障之dual调用风暴案例分享

IT那活儿 / 1794人阅读
性能故障之dual调用风暴案例分享
看兄弟们的总结输出,不仅让我想起奋杀一线的时光,每一个老司机都有属于自己的移动硬盘和老师;每个老司机内心都有让自己记忆终身的性能故障;每一个老司机都是烧不死的鸟儿。但,所有的经历回头看,都是那么的让人热泪盈眶。为什么回忆往事总是让我们热泪盈眶,因为我对这份职业爱的深沉。让我们把时间拨回到2017年......

近期某省渠道应用的签到送流量业务出现了严重的业务超时情况,与此同时该渠道Tuxedo中间件的维护人员在该活动的业务高峰期,也接收到了大量涉及业务办理服务的积压告警短信。


通过对积压的Tuxedo服务执行效率进行统计,发现该服务在业务高峰期时单笔调用的服务执行总耗时已经达到13.4732s


中间件维护人员在对该服务进行实时truss过程中,未发现明显的执行过程等待现象,但经过对该服务单笔调用记录的数据进行分析和统计后,发现在一次调用过程中,该服务对数据库读、写的次数累计已经超过了14000次。



同时在truss过程中,我们发现每次的read5write5对象分别为读、写CRM库。


于是马上接入CRM库进行分析,跟踪积压服务在数据库执行情况。通过剖析主要发现该服务发起的session存在大量的librarycache: mutex X争用,且都在特定的sql上(sql_id:afqzw543rcu2d)。


另外该sql30min内累计执行3.8kw次,与此同时主机Runq队列高居不下,Cpu资源耗尽。


通过剖析该sql,发现该sql主要是利用dual表进行date转换。


由此可发现,本次服务积压主要与此sql有关,但该服务模块上线较早,且近期没有新的变更,那么此次的问题是否和sql调用量增加有关系?


带着此疑问,我们对此sql的调用量做了对比分析。


分析发现2116点到930分总执行次数只有5000万次左右,3206点到930分总共执行了1.1亿次,327日,6点到930分,总共执行了4.01亿次,差不多增长了4倍。所以从数据上分析,该SQL的执行次数是一个不断增长的趋势;


同时发现,随着问题sql执行次数的增加,librarycache: mutex X等待次数也跟着同比增加,进而使得主机Runq队列剧增,Cpu资源耗尽。


那么要解决该问题,就要控制该sql执行频率。通过同应用侧沟通,最终通过修改业务逻辑,在数据库中屏蔽该sql


优化后对服务调用量及平均响应时长进行了监控和数据搜集。


对比发现,优化后服务执行效率提升显著,且稳定,无服务队列积压情况出现。下图为上线前后服务执行效率对比曲线图:


此案例中我们发现在应用代码中使用selectxxx from dual, SQL虽然简单,且单次执行性能优良,但如高频率的执行,则会有资源高消耗的隐患。


因此建议避免在数据库内部进行与数据库无关的处理;且日期以及字符串等相关处理各种程序语言(CJava)都提供了丰富的函数库可使用,本地化处理不仅可以避免与数据库的交互,更可以降低数据库的负载,提高服务性能。


独坐思往昔,愁绝泪盈襟。下回见。

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

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

相关文章

  • zabbix报警发送填坑

    摘要:报警阻塞,发送效率低下这种情况下,报警是根据用户一个个用户发送。效果极大的简化了报警配置,仅配置了两个。发送效率提高,对于一个报警,无论发送人数多少,都只需要触发执行一次脚本。 通常zabbix告警主要可以通过三种方式 1. 自带的直接调用消息接口服务 2. 执行自定义脚本发送消息 3. 通过send remote commend 的方式通过执行脚本发送 2和3的本质都只通过zabb...

    yankeys 评论0 收藏0
  • 有效运维的 on-call 机制

    摘要:如何有效处理紧急事件驱动的工作,成为特别是运维主管运维工作的关键。通知到位和及时响应。机器学习领域是未来的重要发展方向,目前我们还在摸索中。机器学习告警合并事件单的处理如果告警量很大,告警后续处理和跟踪往往会依赖于外部团队部门外或公司外。 编者按]本文作者为陈伯龙,云告警平台[OneAlert创始人,著《云计算与OpenStack》,在IT运营管理、云计算方面从业10多年。 正文 互联...

    binaryTree 评论0 收藏0
  • 有效运维的 on-call 机制

    摘要:如何有效处理紧急事件驱动的工作,成为特别是运维主管运维工作的关键。通知到位和及时响应。机器学习领域是未来的重要发展方向,目前我们还在摸索中。机器学习告警合并事件单的处理如果告警量很大,告警后续处理和跟踪往往会依赖于外部团队部门外或公司外。 编者按]本文作者为陈伯龙,云告警平台[OneAlert创始人,著《云计算与OpenStack》,在IT运营管理、云计算方面从业10多年。 正文 互联...

    DirtyMind 评论0 收藏0
  • 测试管理项目软件测试风险管理实践

    摘要:在软件测试活动中,作为一名测试人员有没有遇到过这样的场景,在测试一个特性或者制定一份测试方案时,往往会想着进行简单测试做简单设计,认为这个场景出现的概率太低,几乎不可能会存在,不测了实际应用时不可能会有这么大的用户量, ...

    用户84 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

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