CentOS Apache性能调优技巧
CentOS 上 Apache 的性能调优可按模块与系统两层进行,以下给出可直接落地的要点与示例配置
一 核心模块与关键参数
-
启用持久连接 KeepAlive
减少 TCP 建连/拆连开销,适合包含大量小资源的页面。示例:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
说明:高并发短连接场景可适当降低 Timeout;长连接资源紧张时可降低 MaxKeepAliveRequests。 -
选择并调优 MPM(多处理模块)
• prefork(多进程、无线程,兼容性好,适合使用 mod_php 的场景)
• worker/event(多线程,高并发、低开销,适合反向代理/静态资源为主)
示例(prefork,需结合内存与并发目标调整):
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150(关键:确保 MaxRequestWorkers × 单进程内存 ≤ 可用内存)
MaxConnectionsPerChild 0(按需改为非零以回收泄漏内存)
提示:event 在高并发短连接下通常更省资源,但需确认模块已启用且应用兼容。 -
静态资源缓存与压缩
• 缓存:启用 mod_expires 设置长期 Cache-Control
• 压缩:启用 mod_deflate 减少传输体积
示例:
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”
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
说明:对带强缓存策略的资源可配合 mod_cache/mod_disk_cache 做反向代理/本地磁盘缓存。 -
启用 HTTP/2
在支持 TLS 的前提下启用 mod_http2 提升多路复用与首包体验:
LoadModule http2_module modules/mod_http2.so
在对应 VirtualHost 的 SSLEngine on 后添加:Protocols h2 http/1.1
注意:需确保 MPM 与 OpenSSL 版本兼容。
二 系统与内核参数
-
文件描述符限制
提升进程可打开文件数,避免 “Too many open files”:
/etc/security/limits.conf- soft nofile 65535
- hard nofile 65535
- soft nproc 65535
- hard nproc 65535
说明:重启会话后生效;必要时在 systemd 服务单元中设置 LimitNOFILE。
-
TCP/IP 栈与内核网络参数
缓解连接耗尽与半开连接问题(示例值,需结合业务与压测微调):
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 30000
fs.file-max = 6815744
应用:sysctl -p 使配置生效。 -
虚拟内存与 I/O 调度
适度降低换页倾向、优化脏页刷写:
vm.swappiness = 10
vm.overcommit_memory = 1
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
三 监控与验证
-
运行时状态与连接
• 进程与连接:ps aux | grep httpd;ss -s 或 netstat -anp | grep :80
• 启用 mod_status 的 ExtendedStatus On,访问 /server-status 观察 Busy/Idle workers、请求速率等。 -
日志与压测
• 日志级别:生产环境建议 LogLevel warn,减少 I/O 压力
• 日志轮转:使用 logrotate/cronolog 控制日志体积与滚动
• 压测与回归:ab、wrk、jmeter 验证并发、延迟与错误率,逐步调大 MPM 与 KeepAlive 参数。
四 安全与常见误区
-
安全加固(不影响性能的必做项)
• 隐藏版本信息:ServerTokens Prod;ServerSignature Off
• 仅启用必要模块,禁用不需要的模块(减少攻击面与内存占用)
• 防火墙仅开放 80/443,证书与协议按最佳实践配置。 -
常见误区
• 盲目增大 MaxRequestWorkers 导致内存耗尽;应以“单进程内存 × 并发数 ≤ 可用内存”为硬约束
• 开启 KeepAlive 但 Timeout 过长,占用连接槽位;过短则失去复用收益
• 生产环境关闭或减少访问日志细粒度记录,避免磁盘 I/O 成为瓶颈
• 在 NAT/负载均衡 场景误用或依赖 tcp_tw_recycle,可能引发连接异常;优先使用 tcp_tw_reuse 并配合合理的超时设置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Apache性能调优技巧
本文地址: https://pptw.com/jishu/770007.html
