max_connections = 100(含 1 個保留給 SUPER 用戶)Too many connections 錯誤whereis mysqld_safe → 通常在 /usr/local/mysql/bin/mysqld_safemysqld 的行(通常有兩行,分別針對不同情況)--max-connections=500(根據業務評估)# 修改前
$MYSQLD --defaults-file=/etc/my.cnf ...
# 修改後
$MYSQLD --defaults-file=/etc/my.cnf --max-connections=500 ...
[mysqld]
max_connections = 1000
# 配套調大
open_files_limit = 65535
table_open_cache = 4000
thread_cache_size = 100
修改 /etc/my.cnf 後重啟服務生效,無需改動啟動腳本,便於版本控制與自動化部署。
| 參數 | 建議值 | 說明 |
|---|---|---|
max_connections | 應用峰值 * 1.2~1.5 | 核心上限 |
open_files_limit | >= max_connections * 5 | 文件描述符,需 OS ulimit -n 支持 |
table_open_cache | >= max_connections * 2 | 表緩存,減少打開/關閉開銷 |
thread_cache_size | 100~200 | 線程複用,降低創建銷毀開銷 |
back_log | 50~100 | 監聽隊列,應對連接風暴 |
-- 當前連接數
SHOW STATUS LIKE 'Threads_connected';
-- 歷史峰值
SHOW STATUS LIKE 'Max_used_connections';
-- 使用率
SELECT (Threads_connected / @@max_connections) * 100 AS usage_pct;
建議告警閾值:使用率 > 80% 持續 5 分鐘觸發擴容或限流。
調大 max_connections 需配套調整文件描述符、表緩存、線程池等參數,並建立監控體系。現代部署請直接修改 my.cnf 而非啟動腳本,實現配置即代碼。