Ubuntu Apache2调优指南
sudo apt update && sudo apt upgrade,确保Apache2及依赖包为最新版本,获取性能改进与安全补丁。a2dismod module_name(如a2dismod status)禁用未使用的模块,减少内存占用与攻击面。/etc/apache2/apache2.conf中配置:KeepAlive On
MaxKeepAliveRequests 100 # 单个连接最大请求数
KeepAliveTimeout 5 # 连接保持超时(秒)
减少TCP握手次数,提升并发处理效率。mod_deflate(sudo a2enmod deflate),添加配置:AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript
压缩静态资源,降低传输体积。mod_cache与mod_disk_cache,添加:LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_disk_cache.so
CacheEnable disk /
CacheRoot "/var/cache/apache2"
CacheDirLevels 2
CacheDirLength 1
缓存静态内容,减少重复请求。/etc/apache2/mods-enabled/mpm_*.conf):
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150 # 最大并发请求数
MaxConnectionsPerChild 4000 # 子进程生命周期内最大请求数
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 0 # 0表示无限(需测试稳定性)
sudo systemctl restart apache2。mod_proxy_balancer将请求分发到多台后端服务器,添加配置:Proxy balancer://mycluster
BalancerMember http://backend1.example.com
BalancerMember http://backend2.example.com
ProxyPass / balancer://mycluster
提升并发处理能力。/etc/apache2/ports.conf中添加Listen 443 ssl http2,并确保mod_http2已启用(sudo a2enmod http2),提升协议效率。ECDHE-ECDSA-AES128-GCM-SHA256),配置会话缓存:SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLSessionCache shmcb:/var/run/ssl_scache(512000)
SSLSessionCacheTimeout 300
减少SSL握手开销。/etc/sysctl.conf,优化网络与磁盘设置:net.core.somaxconn = 4096 # 监听队列长度
net.ipv4.tcp_tw_reuse = 1 # 复用TIME-WAIT连接
vm.swappiness = 10 # 减少内存交换
运行sudo sysctl -p使配置生效。mod_status(sudo a2enmod status),添加配置:<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1 # 仅允许本地访问
</Location>
访问http://localhost/server-status查看性能指标(如请求数、CPU占用)。logrotate自动切割日志(编辑/etc/logrotate.d/apache2):/var/log/apache2/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload apache2
endscript
}
避免日志文件过大占用磁盘空间。error.log(/var/log/apache2/error.log)排查错误;top、htop监控CPU/内存使用;ss -s查看连接数,调整MaxRequestWorkers。<Directory>指令限制敏感目录访问(如/admin);/etc/apache2/apache2.conf中设置AllowOverride None,避免频繁读取.htaccess文件。以上优化措施需根据服务器实际负载(如并发数、内存大小)调整,建议每次修改1-2项后重启Apache(sudo systemctl restart apache2),并通过监控工具验证效果。