优化Apache性能需从模块管理、进程模型、资源分配、缓存压缩、并发处理、日志监控等多维度入手,以下是具体步骤:
sudo apt update && sudo apt upgrade
,确保Apache及依赖包为最新版本,获取性能改进与安全补丁。sudo a2dismod module_name
(如mod_status
、mod_autoindex
等非必需模块)减少资源占用;仅启用核心模块(如mod_authz_host
、mod_log_config
、mod_expires
、mod_deflate
)。Apache的MPM决定进程/线程处理模型,需根据服务器负载选择:
/etc/apache2/mods-available/mpm_prefork.conf
):<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 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 1000
</IfModule>
KeepAlive On
;限制每个连接的请求数(MaxKeepAliveRequests 100
)与超时时间(KeepAliveTimeout 5
),避免空闲连接占用资源。Timeout 300
(默认60秒),缩短无响应请求的等待时间,释放资源。MaxRequestWorkers = 总内存/10MB
),避免内存耗尽。mod_cache
与mod_cache_disk
缓存图片、CSS、JS等静态内容。配置示例:<IfModule mod_cache.c>
<IfModule mod_cache_disk.c>
CacheEnable disk /static/
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDirLevels 2
CacheDirLength 1
CacheDefaultExpire 3600
</IfModule>
</IfModule>
mod_deflate
压缩HTML、CSS、JS等文本资源,减少网络传输量。配置示例:<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
warn
(而非info
),减少日志体积;关闭不必要的日志(如mod_status
的详细日志)。mod_status
监控Apache性能,配置示例(/etc/apache2/mods-enabled/status.conf
):<Location "/server-status">
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>
ExtendedStatus On
htop
(查看进程资源占用)、apachetop
(查看请求速率)、netstat
(查看连接数)实时监控服务器状态。/etc/sysctl.conf
,优化网络与内存设置:vm.swappiness=10 # 减少交换空间使用
net.core.somaxconn=1024 # 增加TCP连接队列长度
net.ipv4.tcp_tw_reuse=1 # 复用TIME_WAIT连接
运行sudo sysctl -p
使配置生效。/var/www/html
)放在SSD上,提升IO速度;增加服务器内存,减少磁盘交换。MaxConnectionsPerChild
设置每个子进程处理的最大请求数(如1000),防止内存泄漏;使用ulimit -n
增加文件描述符限制(默认1024可能不足)。sudo systemctl restart apache2
定期重启(如每周一次),释放内存缓存。以上优化措施需根据服务器硬件配置(内存、CPU、磁盘类型)与业务场景(静态/动态内容比例、并发量)灵活调整,建议在测试环境验证后再应用于生产环境。