Ubuntu Apache性能调优方法
sudo apt update && sudo apt upgrade,确保Apache及依赖包为最新版本,获取性能优化补丁与安全修复。sudo a2dismod module_name(如status、autoindex)禁用未使用的模块,减少内存占用与潜在攻击面。Apache的多路复用模块(MPM)决定了并发处理模型,需根据服务器用途选择:
/etc/apache2/mods-available/mpm_prefork.conf):<IfModule mpm_prefork_module>
StartServers 5 # 启动时的进程数
MinSpareServers 5 # 最小空闲进程数
MaxSpareServers 10 # 最大空闲进程数
MaxRequestWorkers 150 # 最大并发请求数(根据内存调整,每进程约消耗5-10MB)
MaxConnectionsPerChild 0 # 每个进程处理的请求数(0=无限制,若存在内存泄漏可设为1000)
</IfModule>
/etc/apache2/mods-available/mpm_worker.conf):<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25 # 每个子进程的线程数
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
/etc/apache2/apache2.conf):KeepAlive On
MaxKeepAliveRequests 100 # 每个KeepAlive连接的最大请求数(避免单个连接占用过久)
KeepAliveTimeout 5 # 空闲连接的超时时间(秒,建议5-10秒)
/etc/apache2/apache2.conf):Timeout 30 # 默认120秒,可根据业务调整为30-60秒
mod_deflate压缩HTML、CSS、JS等文本资源,减少传输体积(/etc/apache2/mods-available/deflate.conf):<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
mod_cache与mod_cache_disk缓存静态文件,降低服务器负载(/etc/apache2/mods-available/cache_disk.conf):<IfModule mod_cache.c>
<IfModule mod_cache_disk.c>
CacheEnable disk /static/ # 缓存/static/目录下的文件
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDirLevels 2 # 缓存目录层级
CacheDirLength 1 # 目录名长度
CacheDefaultExpire 3600 # 默认缓存过期时间(秒)
</IfModule>
</IfModule>
access.log中不必要的请求),在虚拟主机配置中设置:LogLevel warn # 将日志级别从info调整为warn,减少日志量
CustomLog /var/log/apache2/access.log combined env=!dontlog
htop(实时查看CPU/内存)、apachetop(监控请求速率)、logrotate(自动归档日志)等工具监控性能,及时发现问题。mod_proxy_balancer将请求分发到多个后端服务器,提升并发处理能力(/etc/apache2/mods-available/proxy_balancer.conf):<Proxy balancer://mycluster>
BalancerMember http://backend1.example.com
BalancerMember http://backend2.example.com
</Proxy>
ProxyPass / balancer://mycluster
mod_ssl配置HTTPS,开启OCSP Stapling与Session Resumption减少握手延迟(/etc/apache2/mods-available/ssl.conf):SSLEngine on
SSLCertificateFile /etc/ssl/certs/your_domain.crt
SSLCertificateKeyFile /etc/ssl/private/your_domain.key
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
net.core.somaxconn增加监听队列长度、vm.swappiness降低交换分区使用)。