选择合适的MPM模块
Apache的多路复用模块(MPM)决定了其处理并发请求的方式,需根据场景选择:
/etc/apache2/mods-available/下的对应配置文件(如mpm_prefork.conf、mpm_worker.conf),调整参数后启用模块(sudo a2enmod mpm_prefork)并重启Apache。调整MPM参数
根据所选MPM优化并发处理能力,关键参数如下:
StartServers:启动时的进程数(建议5-10,根据服务器内存调整);MinSpareServers/MaxSpareServers:最小/最大空闲进程数(避免频繁创建/销毁进程,建议5-10/10-20);MaxRequestWorkers:最大并发请求数(核心参数,需根据内存计算,如每进程占用10MB内存,1GB内存可设为100);MaxConnectionsPerChild:每个进程处理的最大请求数(设为0表示无限制,或设为1000-5000以避免内存泄漏)。StartServers:启动时的进程数(建议2-5);MinSpareThreads/MaxSpareThreads:最小/最大空闲线程数(建议25-75/75-150);ThreadsPerChild:每个进程的线程数(建议25-50,需与ThreadLimit一致);MaxRequestWorkers:最大并发请求数(线程数×进程数,如ThreadsPerChild=25、StartServers=2,则初始线程数为50)。启用KeepAlive
KeepAlive通过复用TCP连接减少握手开销,提升静态资源(如图片、CSS)加载速度。配置参数:
KeepAlive On:启用持久连接;
MaxKeepAliveRequests 100:单个连接最大请求数(避免单个连接占用过久);
KeepAliveTimeout 5:等待下一个请求的超时时间(秒,建议3-5秒,过长会导致资源浪费)。
启用压缩模块(mod_deflate)
通过压缩HTML、CSS、JavaScript等文本资源,减少传输数据量(通常可压缩至原大小的30%-70%),提升页面加载速度。配置步骤:
sudo a2enmod deflate;<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
使用缓存模块(mod_cache/mod_disk_cache)
缓存静态资源(如图片、CSS、JS)和动态内容(如数据库查询结果),减少服务器负载和响应时间。配置步骤:
sudo a2enmod cache cache_disk;<IfModule mod_cache.c>
CacheEnable disk /
CacheRoot "/var/cache/apache2"
CacheDirLevels 2
CacheDirLength 1
</IfModule>
禁用不必要的模块
Apache默认启用许多模块,禁用未使用的模块可减少内存和CPU占用。操作步骤:
apache2ctl -M;status、autoindex):sudo a2dismod status autoindex;sudo systemctl restart apache2。优化日志记录
减少日志输出可降低CPU占用,建议:
LogLevel warn(仅记录警告和错误,而非默认的info);logrotate工具自动归档和清理日志:sudo logrotate -f /etc/logrotate.conf(默认配置通常已包含Apache日志轮转规则)。负载均衡(可选)
若单台服务器无法应对高并发,可使用mod_proxy_balancer模块将请求分发到多台后端服务器。配置示例:
<Proxy balancer://mycluster>
BalancerMember http://backend1.example.com
BalancerMember http://backend2.example.com
</Proxy>
ProxyPass / balancer://mycluster
系统级优化
sudo apt update && sudo apt upgrade,获取最新性能改进和安全补丁;/etc/sysctl.conf中的网络和磁盘I/O参数(如net.core.somaxconn设为1024,增加TCP连接队列长度)。