Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> Web 伺服器

Apache 效能優化實戰:MPM 模組選擇 (Prefork vs Worker) 與模組化調優

編輯:Web 伺服器

背景

服務器訪問量暴增導致響應緩慢、下載速度降至 30-40KB/s,經費與環境限制無法上叢集,決定透過 Apache 模組優化提升處理能力。

Apache 2.0 核心變革:MPM (Multi-Processing Modules)

MPM 是 Apache 2.0 最重要變化,負責綁定埠口、接受請求、調度子進程/執行緒。**同一時間只能載入一種 MPM**。

主要 MPM 類型

MPM適用平台特點狀態
beosBeOS預設生產
mpmt_os2OS/2預設生產
perchildUnix不同用戶/群組身份運行子進程,適合多虛擬主機 CGI生產
leader / threadpoolUnix基於 worker 變體實驗性,不建議生產
preforkUnix預派生子進程、無執行緒、相容 1.3、最穩定生產預設
workerUnix多進程+多執行緒混合、高併發、資源開銷低、發展趨勢生產推薦

編譯時指定 MPM

wget https://archive.apache.org/dist/httpd/httpd-2.0.52.tar.bz2
tar jxvf httpd-2.0.52.tar.bz2
cd httpd-2.0.52
./configure --help | grep mpg
# 顯示 --with-mpm=MPM 選項
./configure --with-mpm=worker  # 或 prefork
make && make install

Prefork 工作原理與關鍵參數

  • 控制進程啟動 StartServers 個子進程
  • 指數級擴展:1秒 1個 → 1秒 2個 → 1秒 4個 ... 最多每秒 32 個,直到滿足 MinSpareServers
  • 預派生機制避免請求到來時現建進程,減少系統開銷
  • 無執行緒,進程獨立,**最穩定**,適合非執行緒安全模組 (如舊版 PHP)

Worker 工作原理與關鍵參數

  • 主進程生成 StartServers 子進程
  • 每子進程固定 ThreadsPerChild 執行緒
  • 執行緒獨立處理請求,高併發下資源開銷遠低於進程模型
  • 保留多進程架構獲得穩定性 (單執行緒崩潰不影響整進程)
  • 關鍵參數:MinSpareThreads/MaxSpareThreads (空閒執行緒範圍)、MaxClients (總執行緒上限)
  • 負載超過現有執行緒時派生新子進程

選擇建議

  • 穩定性優先、使用非執行緒安全模組 (mod_php 等): 選 **Prefork**
  • 高併發、現代執行緒安全應用 (PHP-FPM、Java、Python WSGI 等): 選 **Worker**
  • 生產環境**嚴禁**使用 leader/threadpool 實驗性 MPM

其他優化方向

  • 啟用 mod_deflate/mod_gzip 壓縮傳輸
  • 配置 mod_expires/mod_headers 瀏覽器快取策略
  • 調整 KeepAlive/MaxKeepAliveRequests/KeepAliveTimeout
  • 靜態資源分離至輕量級伺服器 (Nginx/Lighttpd) 或 CDN
  • 核心參數優化:TCP 緩衝、somaxconn、檔案描述符限制
Copyright © Windows教程網 All Rights Reserved