Apache 2.4 已彻底移除 Worker MPM,仅支持 Event MPM;需通过 httpd -V 确认 Server MPM: event,启用 mod_mpm_event.so 并禁用 prefork/worker 模块,再依内存精算 ThreadsPerChild、ServerLimit 和 MaxRequestWorkers。
Apache 2.4 中已不再支持 Worker MPM,配置会直接启动失败。你真正需要调优的是 Event MPM——它是 Worker 的线程安全演进版本,专为高并发、低内存、长连接场景设计。
别凭印象或旧文档操作,先验证:
httpd -V | grep -i mpm,输出必须是 Server MPM: event
prefork 或报错 'worker' not supported,说明尚未切换成功LoadModule mpm_event_module modules/mod_mpm_event.so 已启用,且 mod_mpm_prefork.so 和任何 mod_mpm_worker.so 行被完整注释httpd -t 验证语法Event 不是简单“多线程”,而是用事件驱动分离监听与工作线程。关键参数需协同设置:
ThreadsPerChild × ServerLimit;设为 400 时,若 ThreadsPerChild=25,则 ServerLimit 至少为 160 表示子进程永不过期,可减少重建开销;但需确保后端应用无连接泄漏,否则长连接累积可能耗尽资源拍脑袋设 1000 并发可能压垮内存。应基于实测内存占用精算:
ps aux | grep httpd | grep -v grep | awk '{sum+=$6} END {print sum/NR " KB"}'
Event 正常运行有硬性前提,缺一不可:
mod_php,否则 Event 无法启动;宝塔用户可用 httpd -M | grep php 确认输出为空KeepAlive On + KeepAliveTimeout 5
ulimit -n 是否足够(建议 ≥ 65536),避免文件描述符不足导致连接拒绝