CentOS 上 Apache 响应速度优化实操指南
一 基础连接与压缩缓存
- 启用持久连接 KeepAlive,复用 TCP 连接,减少握手开销:
- 配置示例:KeepAlive On;MaxKeepAliveRequests 100;KeepAliveTimeout 5(单位:秒)。
- 启用 Gzip 压缩,降低传输体积:
- 模块:mod_deflate
- 配置示例:对 text/html、text/plain、text/xml、text/css、application/javascript 启用压缩。
- 配置浏览器缓存,减少重复请求:
- 模块:mod_expires
- 配置示例:
- ExpiresActive On
- ExpiresByType text/css “access plus 30 days”
- ExpiresByType image/jpeg “access plus 1 year”
- ExpiresByType image/png “access plus 1 year”
- ExpiresByType image/gif “access plus 1 year”
- ExpiresByType application/javascript “access plus 30 days”
- 精简与降级日志开销(在可接受的运维需求下):
- LogLevel warn,必要时改用更简的日志格式,降低磁盘 I/O。
二 并发模型与关键参数
- 选择合适的 MPM(多处理模块):
- prefork:基于进程,适合使用 mod_php 等阻塞式模块,稳定但内存占用高。
- worker/event:基于线程/事件,高并发下资源利用更优,适合现代动态站点与反向代理场景。
- 调整 MPM 关键参数(示例为常见起点,需结合实际压测微调):
- prefork(示例起点):
- StartServers 5
- MinSpareServers 5
- MaxSpareServers 10
- MaxRequestWorkers 150
- MaxConnectionsPerChild 0
- worker(示例起点):
- StartServers 5
- MinSpareThreads 5
- MaxSpareThreads 10
- MaxRequestWorkers 250
- MaxConnectionsPerChild 0
- 启用 HTTP/2(需 mod_http2,通常要求启用 SSL/TLS):
- 作用:多路复用、头部压缩、请求优先级,显著提升页面并发加载体验。
- 反向代理/动态内容可启用 缓存代理(mod_cache/mod_disk_cache):
三 系统与网络层优化
- 提升文件描述符与连接队列上限:
- 建议将进程可打开文件数提升至高位(如 fs.file-max ≥ 6815744),并相应提高进程级 LimitNOFILE(如 65535),以支持更高并发连接。
- 优化 TCP 栈参数(/etc/sysctl.conf,执行 sysctl -p 生效):
- net.ipv4.tcp_fin_timeout 30
- net.ipv4.tcp_keepalive_time 1200
- net.ipv4.tcp_tw_reuse 1
- net.ipv4.tcp_tw_recycle 1(在部分内核/云环境中可能不推荐或无效,需谨慎评估)
- net.ipv4.ip_local_port_range 1024 65000
- net.ipv4.tcp_max_syn_backlog 8192
- net.ipv4.tcp_max_tw_buckets 5000
- net.core.somaxconn 65535
- net.core.netdev_max_backlog 30000
- 文件系统与挂载优化:
- 使用 noatime 挂载选项,减少访问时间元数据写入,降低磁盘 I/O。
四 验证与上线流程
- 基线压测与 A/B 验证:
- 使用 ApacheBench(ab) 或 wrk 等工具在变更前后进行压测,关注 RPS、P95/P99 延迟、错误率 等关键指标,逐步调优参数。
- 渐进式变更与回滚预案:
- 每次仅变更少量参数,变更后先灰度/低峰时段验证,出现异常及时回滚。
- 监控与告警:
- 持续观察 CPU、内存、连接数、磁盘 I/O、带宽 与 Apache 状态,结合日志分析定位瓶颈。
五 安全与模块管理建议
- 精简模块与隐藏版本信息:
- 禁用不必要的模块,减少攻击面与内存占用;设置 ServerTokens Prod、ServerSignature Off,降低信息泄露风险。
- 保持软件更新:
- 定期更新 Apache 及其模块至稳定版本,修复已知漏洞与性能问题。