服務器訪問量暴增導致響應緩慢、下載速度降至 30-40KB/s,經費與環境限制無法上叢集,決定透過 Apache 模組優化提升處理能力。
MPM 是 Apache 2.0 最重要變化,負責綁定埠口、接受請求、調度子進程/執行緒。**同一時間只能載入一種 MPM**。
| MPM | 適用平台 | 特點 | 狀態 |
|---|---|---|---|
| beos | BeOS | 預設 | 生產 |
| mpmt_os2 | OS/2 | 預設 | 生產 |
| perchild | Unix | 不同用戶/群組身份運行子進程,適合多虛擬主機 CGI | 生產 |
| leader / threadpool | Unix | 基於 worker 變體 | 實驗性,不建議生產 |
| prefork | Unix | 預派生子進程、無執行緒、相容 1.3、最穩定 | 生產預設 |
| worker | Unix | 多進程+多執行緒混合、高併發、資源開銷低、發展趨勢 | 生產推薦 |
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
StartServers 個子進程MinSpareServersStartServers 子進程ThreadsPerChild 執行緒MinSpareThreads/MaxSpareThreads (空閒執行緒範圍)、MaxClients (總執行緒上限)mod_deflate/mod_gzip 壓縮傳輸mod_expires/mod_headers 瀏覽器快取策略KeepAlive/MaxKeepAliveRequests/KeepAliveTimeoutTCP 緩衝、somaxconn、檔案描述符限制