apache高并发调优核心是启用event mpm以支持异步连接管理,合理设置threadsperchild(建议cpu核数×20)、maxrequestworkers(≥后端总并发能力)、min/maxsparethreads,并绑定cpu、调优内核网络参数及反向代理协同策略。

核心是让 Apache 充分利用多核 CPU,同时避免线程争抢、连接堆积和后端失配。关键不在堆参数,而在模型选型、资源绑定与上下游协同。
必须启用 event MPM 并合理设线程数
prefork 和 worker 在高并发长连接场景下会迅速成为瓶颈。event MPM 是唯一支持异步连接管理的模块,能用少量线程维持大量空闲 Keep-Alive 连接。
- ThreadsPerChild 设为 100–256,建议初始值 = CPU 核心数 × 20(如 8 核设 160)
- MaxRequestWorkers 至少等于后端总并发能力,例如 3 台后端各支持 200 连接,则设 ≥600
- MinSpareThreads / MaxSpareThreads 分别设为 75 和 250,减少动态扩缩带来的抖动
- 确保 不启用 StartServers 过高值,event 模式下冷启动无需预建大量线程
绑定 CPU 与调优内核网络栈
默认情况下,Apache 子进程/线程可能在所有 CPU 核心间频繁迁移,引发缓存失效和调度开销。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 用 systemd 启动时添加 CPUAffinity=0-3(按实际核心编号调整),把 httpd 进程固定到特定物理核
- 增大系统文件描述符限制:/etc/security/limits.conf 中设 nofile 为 65535,/etc/sysctl.conf 加 fs.file-max = 2097152
- 启用 TIME_WAIT 复用:net.ipv4.tcp_tw_reuse = 1,降低连接建立延迟
- 适当调大 TCP 缓冲区:net.core.rmem_max 和 net.core.wmem_max 均设为 4194304(4MB)
反向代理层需与后端节奏一致
Apache 代理快、后端响应慢或拒绝复用,会导致连接卡在 proxy 层,占用线程却无实际处理。
- KeepAliveTimeout 设为 5–10 秒,MaxKeepAliveRequests 设为 200–500,避免空等也防止过早断连
- 后端(如 Tomcat/Nginx)的 keepalive 超时必须 ≥ Apache 的 KeepAliveTimeout,否则复用失败触发重连
- ProxySet lbmethod=bybusyness,比轮询更适应多核后端负载不均的情况
- 健康检查 hcinterval 设为 15 秒,hcfail=3,避免探测本身变成压力源
精简响应与启用共享内存缓存
高频小响应体(如 API)的头部开销和序列化成本,在多核并行下会被放大。
- Header unset Server、X-Powered-By,减少每响应约 40–80 字节传输
- 加载 mod_cache_socache + mod_socache_shmcb,用 CacheEnable socache 启用进程间共享缓存,避免每个子进程重复缓存同一资源
- CacheIgnoreHeaders Set-Cookie,防止含用户态响应污染共享缓存
- 对静态资源或幂等 API,加 CacheQuickHandler off 避免绕过缓存逻辑










