Mysql連接泄漏排查

背景

記錄一次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命令查詢進程信息,獲得具體出現問題的客戶端程序

最後,就是排查客戶端程序的問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章