记一次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个级别的告警。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容