一次Mysql数据库活跃连接数高告警的排查方法
基础相关知识
在现代应用中,数据库的性能和稳定性直接影响到整个系统的运行情况。活跃连接数高的告警往往意味着数据库负载过重,可能会导致性能下降甚至服务不可用。
活跃连接数指的是当前与数据库建立连接并且处于活动状态的连接数量。
高活跃连接数可能由以下原因引起:
- 应用程序连接池配置不当
- 数据库查询效率低下
- 未释放的连接或连接泄漏
- 短时间内的并发请求激增
背景
Apollo 是一个开源的分布式配置管理系统,由携程开发并维护。它旨在为微服务架构提供灵活、可管理的配置解决方案,支持动态配置更新、版本控制和多环境管理。存储方面主要是依赖于mysql数据库。在系统运行了一段时间后,某天出现了DBA同事发过来的“活跃连接数”高的告警。随着活跃连接数高的问题触发,发现此时整个DB系统的处理能力都会直线下降,sql执行耗时大大增加。
排查思路
1、由于Apollo最近一段时间系统都没发生过迭代升级,看应用层面的监控数据也没有明显看出指标异常,故怀疑是DB层面可能出现的性能问题。
2、查看DB的监控报表,发现CURD的指标也没有异常的波峰波谷。发现的情况主要表现为:
a、活跃连接数偶尔飙高,但是持续的时间不长,大概几秒就处理OK
b、mysql cpu使用率飙高
c、DB机器的io偶尔飙高