背景
記錄一次Mysql連接池泄漏問題排查,問題表現(xiàn)如下:
- Mysql數(shù)據(jù)庫連接持續(xù)增加,直至達(dá)到最大連接數(shù);
- 業(yè)務(wù)系統(tǒng)部署在不同的服務(wù)器气忠,且存在不同業(yè)務(wù)系統(tǒng)服務(wù)連接相同的Mysql;
- 同一個(gè)服務(wù)器部署多個(gè)業(yè)務(wù)系統(tǒng)程序赋咽,不能根據(jù)主機(jī)直接確定存在問題的程序旧噪。
Sever端排查主機(jī)連接數(shù)量
在數(shù)據(jù)庫查詢各個(gè)客戶端主機(jī)的連接數(shù),找出有問題的主機(jī)脓匿。
SELECT substring_index(HOST, ':', 1) AS 主機(jī)名,
state AS 狀態(tài),
count(*) AS 連接數(shù)
FROM information_schema. PROCESSLIST
GROUP BY 狀態(tài),
主機(jī)名;
Client端排查連接
首先淘钟,查詢數(shù)據(jù)庫端口連接情況
- 在有問題的客戶端主機(jī),通過netstat命令查詢3306端口陪毡,獲取異常連接的PID米母。
netstat -anp | grep 3306
-
輸出結(jié)果參照如下:
- 連接數(shù)統(tǒng)計(jì)命令
# 統(tǒng)計(jì)3306端口總連接數(shù)
netstat -anp | grep 3306 | wc -l
# 統(tǒng)計(jì)java進(jìn)程3306端口連接數(shù)
netstat -anp | grep 3306 | grep java | wc -l
# 統(tǒng)計(jì)某個(gè)進(jìn)程(比如pid為1234)的3306端口連接數(shù)
netstat -anp | grep 3306 | grep 1234 | wc -l
根據(jù)PID查看進(jìn)程信息
- 使用ps命令查詢進(jìn)程信息勾扭,獲得具體出現(xiàn)問題的客戶端程序