应优先选用 event MPM 模式,它通过事件驱动分离监听与工作线程,提升长连接并发能力;再依内存精算 MaxRequestWorkers 和 ThreadsPerChild,合理设置空闲线程池与进程生命周期,并配合 KeepAlive 及系统级优化。
优化 Apache 对 HTTP 请求的并行度管理,核心在于合理配置多处理模块(MPM)及其关联参数,确保服务器能高效复用资源、避免阻塞、匹配实际负载特征。关键不是堆高并发数值,而是让每个连接、线程或进程真正“忙起来”,且不因闲置或争抢拖慢整体响应。
Apache 的并发能力由所用 MPM 决定,不同模型适用场景差异明显:
确认当前启用的 MPM:a2query -M(Ubuntu/Debian)或检查 httpd -V | grep MPM(RHEL/CentOS)。未启用 event,请先加载:a2enmod mpm_event 并禁用 prefork。
以 event MPM 为例,这些参数直接影响并行请求吞吐量与稳定性:
StartServers 4、MinSpareThreads 25、MaxSpareThreads 75 即可应对常规波动。MaxRequestWorkers 反推所需进程数(MaxRequestWorkers ÷ ThreadsPerChild)。修改位置一般在 /etc/apache2/mods-enabled/mpm_event.conf(Ubuntu)或 extra/httpd-mpm.conf(源码安装)。
KeepAlive 不是“开就完事”,而要与并行度协同设计:
KeepAlive On,这是复用连接的前提。MaxRequestWorkers 资源;太短(如 1 秒)又失去复用意义。该配置通常放在主配置文件 apache2.conf 或虚拟主机段内。
高并行度下,恶意或异常请求容易触发资源耗尽。需主动设限:
Timeout 20),避免慢速攻击或卡死连接长期挂起。LimitRequestBody 10485760 即 10MB),防止大文件请求吃光缓冲区。mod_evasive 或 mod_security:对同一 IP 短时间高频请求自动拦截,保护并发资源不被滥用。这些指令可写在全局配置或特定目录段中,实现分层防护。