高并发下应优化Apache的KeepAlive(超时5~10秒、最大请求数200~500)、采用event MPM并调优线程参数、按负载均衡算法加权或选bybusyness、启用15秒间隔健康检查、开启共享内存缓存并精简响应头。

调整KeepAlive与连接复用策略
高并发场景下,频繁建立和关闭TCP连接会显著增加系统开销。Apache默认开启KeepAlive,但超时时间(KeepAliveTimeout)和最大请求数(MaxKeepAliveRequests)若设置不合理,容易导致连接堆积或过早断连。
建议将KeepAliveTimeout设为5~10秒,避免长连接空等;MaxKeepAliveRequests调至200~500,平衡复用率与资源释放。同时确保后端服务(如Tomcat、Nginx)的KeepAlive配置与之匹配,否则代理层复用而上游拒绝,反而触发重连。
优化Proxy模块线程/进程模型
使用event MPM(而非prefork或worker)是高并发反向代理的前提。event MPM支持异步处理连接,在维持大量空闲长连接(如WebSocket、HTTP/2)时更省资源。
关键参数建议:
- ThreadsPerChild:设为100~256,根据CPU核心数和内存调整
- MaxRequestWorkers:不低于后端节点总连接容量,例如3台后端各支持200并发,则设为600+
- MinSpareThreads / MaxSpareThreads:分别设为75和250,减少动态伸缩抖动
合理配置负载均衡算法与健康检查
默认的BalancerMember轮询(roundrobin)在后端性能不均时易造成倾斜。建议启用loadfactor手动加权,或改用bytraffic(按流量)或bybusyness(按当前活跃请求数)算法。
健康检查(ProxyHCExpr + hcinterval)必须开启,但频率不宜过高:
- hcinterval 15(秒)较稳妥,避免探测压垮后端
- hcfail 3 和 hcsuccess 2 防止误判闪断
- 对API类服务,用HEAD /health比GET更轻量
启用缓存与响应头优化
对静态资源或可缓存API响应,Apache反向代理层可做简单缓存,减轻后端压力:
- 加载mod_cache、mod_cache_socache、mod_socache_shmcb
- 用CacheEnable socache开启共享内存缓存,避免每个子进程独立缓存
- 配合CacheIgnoreHeaders Set-Cookie绕过含用户态的响应,防止缓存污染
同时精简响应头:Header unset Server、Header unset X-Powered-By,降低网络传输体积,尤其对小响应体高频请求有明显收益。










