編輯 /etc/init.d/mysql,找到 safe_mysqld 啟動行,追加參數:
$bindir/safe_mysqld --user=mysql --datadir=$datadir --pid-file=$pid_file \
-O max_connections=1000 \
-O wait_timeout=500 \
-O interactive_timeout=500 &
重啟生效:mysqladmin shutdown && /etc/init.d/mysql start
[mysqld]
max_connections = 1000
wait_timeout = 500
interactive_timeout = 500
# 參考官方範本選擇適合硬體的基礎配置
# my-huge.cnf : 1-2GB 記憶體、專用 DB 伺服器
# my-large.cnf : 512MB 記憶體
# my-medium.cnf : 128MB 記憶體
# my-small.cnf : ≤64MB 記憶體
配置檔優先順序:/etc/my.cnf (全域) → $DATADIR/my.cnf (實例) → ~/.my.cnf (用戶)。
| 參數 | 預設 | 建議調整 | 影響 |
|---|---|---|---|
max_connections | 151 (5.7+) | 視應用峰值連接數 + 緩衝 (如 500-2000) | 每連接消耗執行緒堆疊、緩衝區記憶體,過大導致 OOM |
wait_timeout | 28800 (8小時) | 300-600 秒 | 非互動連接閒置超時回收,防連接洩漏佔滿 |
interactive_timeout | 28800 | 同 wait_timeout | 互動式客戶端(mysql CLI)閒置超時 |
mysqladmin -u root -p variables | grep -E 'max_connections|wait_timeout|interactive_timeout'
修改 sql/mysqld.cc 中 max_connections 預設值(100 → 1500),重新 ./configure && make && make install。僅適用於無法動態配置的極舊版本或嵌入式場景。