apache性能调优核心是分场景、看瓶颈、配模块的系统性工作,围绕并发模型(选对mpm)、连接管理(keepalive优化)、安全开销(减负如cdn卸载/https前置)和可观测性(mod_status监控)四方面展开,而非盲目调整堆参数。

Apache 性能调优不是堆参数,而是分场景、看瓶颈、配模块的系统性工作。核心围绕并发模型、连接管理、安全开销和可观测性四方面展开,不盲目改数字,先确认当前负载特征。
选对 MPM 模型是前提
MPM(多处理模块)决定 Apache 处理请求的根本方式,必须匹配硬件和业务类型:
-
prefork:每个请求独占一个进程,稳定但内存开销大;适合运行 PHP-CGI 或老模块的环境;4核8GB 推荐
StartServers 8、MaxRequestWorkers 256 - worker:多进程+多线程,兼顾资源效率与并发能力;适合中高流量、支持线程安全模块(如 mod_php + FPM 分离)的场景
-
event:事件驱动,专为高并发静态/反向代理优化;要求后端服务(如 PHP-FPM)异步友好;禁用
mod_php,改用 FastCGI
切换前执行:sudo a2dismod mpm_* && sudo a2enmod mpm_event,再重启服务。
KeepAlive 要开,但得管住
开启长连接能减少 TCP 握手开销,但放任不管会拖垮连接数:
-
KeepAlive On必须启用 -
KeepAliveTimeout 5—— 不宜超过 10 秒,避免空闲连接长期占用 worker -
MaxKeepAliveRequests 100—— 静态资源多的站点可设为 200~500;动态接口为主的建议保持默认或略降
配合 Timeout 30 控制单请求总耗时,防慢请求阻塞。
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
让监控说话,别靠猜
没有监控的调优等于盲调。优先启用并保护好 mod_status:
- 在配置中加入:
<location><br> SetHandler server-status<br> Require ip 127.0.0.1 192.168.1.0/24<br></location>
- 访问
/server-status?auto可获取机器可读数据,关注:
•IdleWorkers是否长期为 0(说明并发不足)
•BusyWorkers是否持续接近MaxRequestWorkers(需扩容或限流)
•ReqPerSec和BytesPerSec是否与带宽/后端匹配
同时打开 ExtendedStatus On,结合 logrotate 管理 access.log 和 error.log,避免日志写满磁盘。
减负比加压更有效
很多性能问题源于“不该 Apache 做的事它在硬扛”:
- 静态资源(js/css/img)交给 CDN 或 Nginx 处理,Apache 只负责动态逻辑
- 启用
mod_deflate压缩文本响应(HTML/JS/CSS),但跳过图片、视频等已压缩格式 - 用
mod_evasive或mod_security拦截高频恶意请求,避免它们挤占 worker - HTTPS 终止尽量前置到负载均衡器(如 ALB、Nginx),减轻 Apache TLS 计算压力
如果后端是 PHP,确保使用 OPcache 并调大 opcache.memory_consumption,避免每次请求都重编译脚本。










