在Ubuntu上優化Apache并發處理可從以下方面入手:
選擇高效MPM模塊
mpm_event
或mpm_worker
(線程/事件驅動,適合高并發),禁用mpm_prefork
(進程驅動,資源消耗大)。sudo a2dismod mpm_prefork # 禁用prefork
sudo a2enmod mpm_event # 啟用event
sudo systemctl restart apache2
調整MPM參數
MaxRequestWorkers
(或MaxClients
):設置為服務器內存可承受的最大并發數(如MaxRequestWorkers 150
)。ThreadsPerChild
(worker/event):單進程線程數,建議25-64。StartServers
/Min/MaxSpareThreads
:控制空閑線程/進程數,避免頻繁創建銷毀。<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestWorkers 150
</IfModule>
優化系統資源限制
sudo sysctl -w fs.file-max=100000
echo "fs.file-max = 100000" >> /etc/sysctl.conf
/etc/sysctl.conf
):net.ipv4.tcp_tw_reuse = 1 # 復用TIME_WAIT連接
net.core.somaxconn = 4096 # 監聽隊列長度
sudo sysctl -p
啟用緩存與壓縮
mod_cache
和mod_expires
,緩存靜態內容(如CSS/JS)。sudo a2enmod cache mod_expires
mod_deflate
,壓縮響應數據。調整KeepAlive設置
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
監控與調優
htop
、netstat
或apachetop
監控服務器負載,根據流量調整參數。ab
(ApacheBench)模擬并發請求,驗證優化效果。注意:修改配置后需重啟Apache服務,且需根據服務器硬件(內存、CPU)和應用場景調整參數,避免過度配置導致資源浪費或服務不穩定。