廉價 VPS 常見 512MB 甚至更少內存,Apache 和 MySQL 皆為內存大戶。優化核心:穩定性優於性能,寧可犧牲並發也要防止 OOM 宕機。本文基於 CentOS 5 32bit 實踐經驗,拒絕無意義口水戰。
chkconfig 服務名 off 禁用自啟,service 服務名 stop 停止運行中進程| 參數 | 含義 | 調優方向 |
|---|---|---|
| StartServers | 啟動時創建的子進程數 | 適度減小 |
| MinSpareServers / MaxSpareServers | 最小/最大空閒進程數 | 減小節省內存,接受響應稍慢 |
| MaxClients | 最大並發連接數 | 最關鍵,按可用內存/單進程內存計算 |
| MaxRequestsPerChild | 子進程處理請求數上限 | 平衡 CPU 開銷與內存洩漏風險,建議 1000 |
| KeepAlive / KeepAliveTimeout | 保持連接/超時時間 | 開啟 KeepAlive,Timeout 設小(如 5s) |
StartServers 5
MinSpareServers 5
MaxSpareServers 20
ServerLimit 128
MaxClients 128
MaxRequestsPerChild 1000
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 5
預留 80-100MB 給系統+Kloxo+MySQL,Apache 可用 ~400MB,單進程 ~4MB,MaxClients 不超 150,保守設 128。
僅保留必要模塊,其餘註釋掉:
mod_authz_host.so
mod_log_config.so
mod_expires.so
mod_deflate.so
mod_headers.so
mod_setenvif.so
mod_mime.so
mod_autoindex.so
mod_negotiation.so
mod_dir.so
mod_alias.so
mod_rewrite.so
mod_proxy.so # 視情況保留
編輯 /etc/my.cnf 的 [mysqld] 區段:
skip-locking
skip-bdb
skip-innodb
禁用 BDB 和 InnoDB 引擎節省內存,僅用 MyISAM 時極為有效。重啟 MySQL 生效。