首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

大流量網站 MySQL 關鍵參數調優實戰:back_log、key_buffer、max_connections 等 10 參數配置指南

     編輯:MySQL 資料庫相關知識

場景定義

日訪 20 萬+ PV,MySQL 成瓶頸,預設參數完全不夠用。以下為 2GB 記憶體主機實測配置(供參考,需依硬體調整)。

十大關鍵參數調優

參數預設值調優值作用與調整依據
back_log50500TCP 連接請求隊列長度。出現大量 "unauthenticated user" 待連進程時需調大。受 OS somaxconn 限制。
interactive_timeout28800 (8h)7200 (2h)互動連線空閒斷開時間。縮短釋放閒置連線資源。
key_buffer_size8MB400MBMyISAM 索引塊緩衝區。共享所有執行緒。設為實體記憶體 25-30%,過大導致 swap。
max_connections1001024最大同時連線數。避免 "Too many connections"。增加會消耗檔案描述符。
record_buffer (read_buffer_size)128KB16MB順序掃描緩衝區/執行緒。大量全表掃描查詢時調大。
sort_buffer_size2MB16MB排序緩衝區/執行緒。加速 ORDER BY、GROUP BY。複雜排序查詢多時調大。
table_cache (table_open_cache)64512所有執行緒打開表快取數。每表需 2 檔案描述符。避免頻繁開關表。
thread_cache_size080可複用執行緒快取。高併發短連線場景顯著降低建立執行緒開銷。觀察 Threads_created vs Connections。
wait_timeout28800 (8h)7200 (2h)非互動連線空閒斷開時間。防止睡眠連線佔用資源。
innodb_buffer_pool_size159MB視記憶體而定InnoDB 核心緩衝池(數據+索引)。專用機建議 70-80% 實體記憶體。

調整生效方式

# 修改 /etc/my.cnf [mysqld] 區段
# 重啟 MySQL
service mysqld restart

監控驗證指標

  • SHOW GLOBAL STATUS LIKE 'Threads_created' / Connections → 低比例表 thread_cache 有效
  • SHOW GLOBAL STATUS LIKE 'Key_read_requests' / Key_reads → 命中率 > 99% 表 key_buffer 充足
  • SHOW ENGINE INNODB STATUS 觀察 buffer pool 使用率
  • SHOW PROCESSLIST 觀察 Sleep 連線數量

核心原則

  1. **以監控數據為準**,而非盲目套用他人配置
  2. **單一變更、觀察效果、再調下一個**
  3. **記憶體總用量不可超過物理記憶體 80-90%**(預留 OS、其他進程)
  4. **備份配置檔**,便於回滾
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved