| 指標 | 含義 | 預設/上限 |
|---|---|---|
max_connections | 伺服器允許最大同時連線數 | 預設 100,上限 16384 |
Threads_connected | 當前活躍連線執行緒數 | 動態變化 |
當 Threads_connected == max_connections 時,新連線被拒絕。
SHOW VARIABLES LIKE 'max_connections';
SHOW STATUS LIKE 'Threads_connected';
max_connections 或池耗盡未等待機制。max_connections(立竿見影)
# my.cnf / my.ini [mysqld] 區段
max_connections = 3000 # 建議值視記憶體而定,理論上限 16384
修改後**重啟 MySQL** 生效。注意:每連線消耗執行緒棧、緩衝區記憶體,總記憶體 ≈ max_connections × (thread_stack + sort_buffer + read_buffer + ...),需確保物理記憶體充足。
配置原則:pool_max_size ≤ max_connections × 0.8(留 20% 給管理/備份連線)。
# 定期採集
SHOW STATUS LIKE 'Threads_connected';
SHOW STATUS LIKE 'Max_used_connections'; # 歷史峰值
設定告警:Threads_connected / max_connections > 0.8 觸發擴容或流控。
max_connections 不解決洩漏,需並行修復應用程式。my.ini 格式與 Linux my.cnf 略異(無 set-variable 前綴)。thread_pool 插件(Percona/MySQL Enterprise)降低上下文切換開銷。