萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 當前連接數與最大連接數監控:核心命令、詳情分析與巡檢自動化

連接數耗盡導致 1040 - Too many connections 是線上高頻故障。本文匯總核心監控命令、輸出解讀、異常連接處理與自動化巡檢腳本,構建連接數健康度體系。

核心監控命令三板斧

1. 查看最大連接數配置


mysql> SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+

預設 151(含 1 個 SUPER 用戶保留),生產常調至 1000-5000。

2. 查看當前連接總數與詳情


-- 僅統計數量
mysql> SHOW STATUS LIKE 'Threads_connected';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 42    |
+-------------------+-------+

-- 詳細列表(含前 100 條)
mysql> SHOW PROCESSLIST;
-- 全量詳情(需 PROCESS 權限)
mysql> SHOW FULL PROCESSLIST;

3. 關鍵列解讀

列含義異常判斷
Id連接線程 IDKill 目標
User連接用戶非預期用戶
Host客戶端 IP:Port異常來源 IP
db當前數據庫無庫連接可能泄露
Command執行命令類型Sleep 過多、Query 長時間
Time當前狀態持續秒數> 600 秒關注
State線程狀態Locked、Sending data、Copying to tmp table
Info執行的 SQL 片段慢查詢、鎖等待 SQL

異常連接處理:Kill 與防護


-- 強制斷開指定連接
mysql> KILL 15;  -- 或 KILL CONNECTION 15
-- 僅終止當前查詢,保持連接
mysql> KILL QUERY 15;

自動化清理長連接腳本


#!/bin/bash
# 清理超過 1 小時 Sleep 狀態的非 root 連接
mysql -uroot -p${PASS} -e "
SELECT CONCAT('KILL ', id, ';') 
FROM information_schema.PROCESSLIST 
WHERE COMMAND = 'Sleep' 
  AND TIME > 3600 
  AND USER != 'root'
  AND USER NOT IN ('monitor','backup');
" | mysql -uroot -p${PASS}

連接數不足預警與擴容決策

關鍵指標公式

  • 使用率 = Threads_connected / max_connections × 100%
  • 峰值利用率 = Max_used_connections / max_connections × 100%

分級告警閾值建議

擴容決策矩陣

級別使用率動作
Info> 60%記錄趨勢,評估增容
Warning> 80%排查連接泄露、優化連接池、準備擴容
Critical> 90%緊急擴容、清理閒置連接、限流熔斷

動態調整 max_connections


-- 即時生效,無需重啟(需 SUPER 權限)
SET GLOBAL max_connections = 2000;

-- 持久化需同步修改 my.cnf
[mysqld]
max_connections = 2000

記憶體試算:每連接約消耗 sort_buffer_size + read_buffer_size + join_buffer_size + thread_stack ≈ 4-10MB。max_connections=2000 需預留 8-20GB 記憶體。

巡檢儀表盤關鍵指標

  • Threads_connected(當前連接)
  • Threads_running(活躍查詢數)
  • Aborted_connects(認證失敗/連接中斷)
  • Connection_errors_max_connections(因滿拒絕次數)
  • Max_used_connections(啟動以來峰值)

連接數監控不是看數字,是看趨勢、懂業務、知代碼。將巡檢腳本接入 Prometheus+Grafana,設置分級告警,讓「Too many connections」成為歷史。

copyright © 萬盛學電腦網 all rights reserved
場景方案代價
應用連接池配置過大調小 pool size、啟用連接驗證低(配置變更)
業務真實增長調大 max_connections + 記憶體評估中(需重啟或動態調整)
連接泄露(未關閉)代碼修復 + 臨時 Kill 清理高(需發版)
慢查詢堵塞連接優化 SQL、增加只讀實例分流中高