记一次mysql 连接数过多问题分析

线上mysql数据库连接数监控如图,日常已经在较高水位,有一次流量毛刺,直接导致连接数达到上线,jdbc连接池无法创建新的连接,导致服务可用性急剧下降。

mysql连接数监控

事后分析过程如下:

1.从mysql角度分析哪些IP连接数比较大,尤其是容器部署,这里显示的都是宿主机IP,每台宿主机上的容器数或多或少,这里仅供参考

mysql按IP分组统计连接数

2.分析单个容器实例的连接数,单台60个连接


单台机器的mysql tcp连接数

3.使用arthas分析datasource的连接数,发现单个datasource的maxpoolsize=20,分析配置文件发现总共初始化了三个datasource,和容器内的mysql tcp scoket数匹配。

arthas tt命令打印对象内容

4.再次分析,发现该数据库总共有多个实例组连接,汇总起来的实例数超过50,和3k多的总连接数吻合

至此,问题已经分析出来,后面考虑如何合并datasource和减少实例组实例数来解决问题了。

另外,为了防止连接数打满导致的应用可用性下降,运维侧也需要针对连接数使用情况做监控,建议阈值超过50%和80%做2个级别的告警。

你可能感兴趣的:(记一次mysql 连接数过多问题分析)