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

VPS 低內存環境下 Apache 與 MySQL 性能優化實戰

     編輯:MySQL 資料庫相關知識

場景與原則

廉價 VPS 常見 512MB 甚至更少內存,Apache 和 MySQL 皆為內存大戶。優化核心:穩定性優於性能,寧可犧牲並發也要防止 OOM 宕機。本文基於 CentOS 5 32bit 實踐經驗,拒絕無意義口水戰。

系統層面:精簡守護進程

  • 關閉非必要服務:ClamAV、Kloxo(不常用時)、QMail(不發郵件)等
  • 命令:chkconfig 服務名 off 禁用自啟,service 服務名 stop 停止運行中進程
  • 未知進程先 Google 確認再動手

Apache Prefork 模式核心參數調優

參數含義調優方向
StartServers啟動時創建的子進程數適度減小
MinSpareServers / MaxSpareServers最小/最大空閒進程數減小節省內存,接受響應稍慢
MaxClients最大並發連接數最關鍵,按可用內存/單進程內存計算
MaxRequestsPerChild子進程處理請求數上限平衡 CPU 開銷與內存洩漏風險,建議 1000
KeepAlive / KeepAliveTimeout保持連接/超時時間開啟 KeepAlive,Timeout 設小(如 5s)

512MB VPS 實戰配置參考

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。

精簡 Apache 模塊

僅保留必要模塊,其餘註釋掉:

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  # 視情況保留

MySQL 低內存配置

編輯 /etc/my.cnf 的 [mysqld] 區段:

skip-locking
skip-bdb
skip-innodb

禁用 BDB 和 InnoDB 引擎節省內存,僅用 MyISAM 時極為有效。重啟 MySQL 生效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved