1GB 記憶體伺服器隨線上用戶增長頻繁死機/卡頓。MySQL 具伸縮性演算法,透過參數調校可在有限記憶體發揮最大效能。
/usr/local/mysql/share/mysql/ 下有 my-huge.cnf、my-medium.cnf、my-large.cnf、my-small.cnf。複製適合者至 /etc/my.cnf 修改。
三大核心參數:key_buffer_size、query_cache_size、table_cache。
Key_read_requests / Key_reads 比率應 ≥ 1:100 (1:1000 更佳)SHOW STATUS LIKE 'key_read%';
Qcache_inserts、Qcache_hits、Qcache_lowmem_prunes、Qcache_free_blocks、Qcache_total_blocks
Lowmem_prunes 大 → 快取不足需調大Hits 大 → 重複查詢多,快取有效Hits 小 → 重複率低,快取反而拖慢效能,可關閉Free_blocks 大 → 碎片多
query_cache_size=32M; query_cache_type=1Open_tables / Opened_tables:Open_tables == table_cache 且 Opened_tables 持續增長 → 需調大
sort_buffer_size = 1M
max_connections = 120
wait_timeout = 120
back_log = 100
read_buffer_size = 1M
thread_cache = 32
interactive_timeout = 120
thread_concurrency = 4 -- CPU核心數 x2
skip-innodb -- 不需 InnoDB 可關閉節省資源
log-bin (前加 # 註解)log_slow_queries, long_query_time=10, log-queries-not-using-indexes