MySQL 最大連接數 (max_connections) 直接決定服務器並發承載能力。本文說明如何查看當前連接使用情況、臨時調整與持久化配置。
-- 查看歷史峰值連接數 (自啟動以來) SHOW GLOBAL STATUS LIKE 'Max_used_connections'; -- 查看當前線程/連接數 SHOW STATUS LIKE 'Threads_connected';
關鍵指標: 若 Max_used_connections 接近 max_connections,說明連接池不足或洩漏,需擴容或排查應用。
SHOW VARIABLES LIKE 'max_connections';
默認值通常為 151 (MySQL 5.5+) 或 100 (舊版本)。
SET GLOBAL max_connections = 5000;
SUPER 權限。編輯配置文件 my.cnf (Linux) 或 my.ini (Windows) [mysqld] 區段:
[mysqld] max_connections = 5000
保存後重啟 MySQL 服務生效:systemctl restart mysqld 或 service mysql restart。
| 參數 | 建議值/說明 |
|---|---|
open_files_limit | 建議 ≥ max_connections * 5 (表緩存、臨時文件等),系統 ulimit -n 也需配合調大。 |
table_open_cache | 建議 ≥ max_connections * N (N 為典型查詢涉及表數),減少打開/關閉表開銷。 |
innodb_buffer_pool_size | 專用 DB 服務器設為物理內存 70-80%,支撐高併發讀寫。 |
thread_cache_size | 建議 50-100,緩存線程減少創建/銷毀開銷。 |
back_log | TCP 連接隊列長度,高併發突發時建議調大 (如 500-1000)。 |
max_connections 上限。
SHOW PROCESSLIST;,Kill 或調整 wait_timeout/interactive_timeout。SET GLOBAL max_connections=更大值 緩解,隨後持久化配置並重啟。max_connect_errors 觸發,執行 FLUSH HOSTS; 並排查網絡/認證失敗原因。Max_used_connections / max_connections 比率,持續 > 85% 觸發擴容預警。thread_cache_size、table_open_cache、open_files_limit 同步調優。