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),并通过监控工具验证效果。