Mysql连接泄漏排查

原创
2020/10/17 15:02
阅读数 949

背景

记录一次Mysql连接池泄漏问题排查,问题表现如下:

  • Mysql数据库连接持续增加,直至达到最大连接数;
  • 业务系统部署在不同的服务器,且存在不同业务系统服务连接相同的Mysql;
  • 同一个服务器部署多个业务系统程序,不能根据主机直接确定存在问题的程序。

Sever端排查主机连接数量

在数据库查询各个客户端主机的连接数,找出有问题的主机。

SELECT substring_index(HOST, ':', 1)  AS 主机名,
       state AS 状态,
       count(*) AS 连接数
FROM information_schema. PROCESSLIST
 GROUP BY 状态,
         主机名;

Client端排查连接

首先,查询数据库端口连接情况

  • 在有问题的客户端主机,通过netstat命令查询3306端口,获取异常连接的PID。
netstat -anp | grep 3306
  • 输出结果参照如下:

  • 连接数统计命令

# 统计3306端口总连接数
netstat -anp | grep 3306 | wc -l

# 统计java进程3306端口连接数
netstat -anp | grep 3306 | grep java | wc -l

# 统计某个进程(比如pid为1234)的3306端口连接数
netstat -anp | grep 3306 | grep 1234 | wc -l

根据PID查看进程信息

  • 使用ps命令查询进程信息,获得具体出现问题的客户端程序

最后,就是排查客户端程序的问题了。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部