宜信开源|案例:UAVStack的慢SQL数据库监控实战

举报
且听风吟 发表于 2019/09/05 11:39:12 2019/09/05
【摘要】 背景在此前的「UAVStack的慢SQL数据库监控功能及其实现」一文中,我们提到,数据库连接池监控能够让运维人员随时了解数据库连接池的状态,有效防止系统出现连接池活动连接数占满无法连接数据库的情况;而慢SQL监控功能则可以动态展示一个系统的SQL情况,帮助优化SQL语句,让系统更稳定。今天我们通过三个案例继续介绍数据库监控功能在实际场景中的应用,帮助大家更好地了解这一利器。案例一图1 上图是...

背景

在此前的「UAVStack的慢SQL数据库监控功能及其实现」一文中,我们提到,数据库连接池监控能够让运维人员随时了解数据库连接池的状态,有效防止系统出现连接池活动连接数占满无法连接数据库的情况;而慢SQL监控功能则可以动态展示一个系统的SQL情况,帮助优化SQL语句,让系统更稳定。

今天我们通过三个案例继续介绍数据库监控功能在实际场景中的应用,帮助大家更好地了解这一利器。

案例一

图1

1562205799160034967.jpeg

上图是一个服务新功能上线的案例。

当时UAV收到了数据库慢SQL告警,登录系统进行问题诊断后,我们通过数据库监控发现了大量缓慢调用。

一条相对简单的SQL,执行了603次,平均执行时间达到1328.97ms,最大执行时间为1815ms。

原因在于新功能上线后,相关运维人员未及时增加索引。

图2

1562205810102023716.jpeg

点击图1中某一行可以查看详情(如图2所示)。本页列表包括了每一条SQL的开始执行时间、执行时长、入参、执行结果,可以看到每条SQL的执行时长均在1200ms+。

图3

1562205817727085086.jpeg

点击图2中某一行的调用链关联,可以跳转至本次SQL调用对应应用/服务的一条端到端完整的调用链路,JDBC操作对应的调用环节高亮显示,如图3所示。

案例二

图4

1562205825198041891.jpeg

上图为某外购催收系统的优化案例。

在系统未优化前,9:30-10:30单个服务节点的QPM为6000+,而给后端数据库带来的QPM是13–14+万。通过数据库QPM与服务节点QPM的比值可知,每个服务请求对数据库带来的SQL操作数为20+。

系统优化后,服务节点QPM不变,而数据库QPM下降到2–4万,数据库QPM与服务节点QPM的比值也下降到5左右。从监控层面上来看,系统优化效果还是比较明显的。

案例三

图5

1562205836215061068.jpeg

上图还是关于该外购催收系统的案例。

催收系统在查询催收历史时,统计记录数的count(*)语句,因为执行计划异常,执行效率低,占用了大量资源,导致数据库服务器CPU资源耗尽,进而催收系统不可用。

通过图5中可以看到,故障期间的慢SQL数目明显变大,慢SQL具体为count(*)语句。

图6

1562205843267007542.jpeg

通过图6可以发现,故障期间的连接池资源被耗尽,活动连接数达到峰值,而空闲连接数为0;SQL分类统计图表也显示故障期间查询错误SQL数量明显变大。

图7

1562205849536024656.jpeg

查看故障期间的慢SQL列表,3种执行时间长的SQL全是count(*)语句。

图8

1562205858802022154.jpeg

查看故障期间的慢SQL详情及与调用链关联,均显示了count(*)语句执行时间长以及执行错误。

关于数据库监控的应用实例就介绍到这里。欢迎大家持续关注UAVStack,与我们一起解锁更多智能运维新能力。

官方网站:https://uavorg.github.io/main/

开源地址:https://github.com/uavorg

作者:谢知求

原文首发 UAVStack智能运维

来源:宜信技术学院

本文转载自异步社区。

原文链接:https://www.epubit.com/articleDetails?id=NNd2b014d8-a535-4c01-b63c-a081e4046494

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。