在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)和应用场景调整参数,避免过度配置导致资源浪费或服务不稳定。