隨著訪問量增長,MySQL 預設參數無法支撐高併發。本文針對日均 20 萬 PV 以上的站點,整理八大關鍵系統參數的調優原理、建議值與監控指標,助您穩住資料庫底盤。
| 參數 | 預設值 | 建議值(2GB RAM 範例) | 調優原理 |
back_log | 50 | 500 | 監聽隊列長度,應對突發連線風暴;受 OS somaxconn 限制 |
interactive_timeout | 28800 | 7200 | 互動式連線空閒斷開時間,減少殭屍連線佔用槽位 |
key_buffer_size | 8MB | 400MB | MyISAM 索引塊緩衝,所有執行緒共享;設太大導致 Swap 反而變慢 |
max_connections | 100 | 1024 | 最大並發連線數;過小出現 "Too many connections",過大耗盡記憶體/檔案描述符 |
read_buffer_size (record_buffer) | 128KB | 16MB | 全表掃描時每執行緒分配的緩衝;大量掃描查詢可調大 |
sort_buffer_size | 2MB | 16MB | 每執行緒排序緩衝;ORDER BY/GROUP BY 大量排序受益 |
table_open_cache (table_cache) | 64 | 512 | 所有執行緒打開表快取數;每表需 2 個檔案描述符,配合 open_files_limit |
thread_cache_size | 0 | 80 | 可復用執行緒快取;對比 Connections vs Threads_created 調整 |
wait_timeout | 28800 | 7200 | 非互動連線空閒斷開時間;防止應用連線洩漏佔滿槽位 |