Apache长连接需协同配置KeepAlive On、MaxKeepAliveRequests(prefork模式50–100,worker/event模式100–200)和KeepAliveTimeout(2–5秒),三者失衡将导致内存上涨或复用收益丧失。

Apache 长连接不是“开个开关”就完事,关键在三个参数协同控制:是否启用、最多处理几个请求、空闲多久就断开。配得松,内存涨、线程卡;配得太紧,又抵消了复用收益。
KeepAlive 开关必须打开
默认是 Off,不手动开启就根本没长连接。写法很简单:
- KeepAlive On —— 必须加,否则后续参数无效
- 放在主配置或
<VirtualHost>块里都行,全局生效
MaxKeepAliveRequests 控制单连接请求数
它决定一个 TCP 连接最多服务多少次 HTTP 请求,到数就主动断开,强制释放进程/线程资源,防止内存缓慢堆积。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- prefork 模式(进程型):建议 50–100,进程重、内存独占,不宜拖太久
- worker/event 模式(线程型):可设 100–200,线程轻量但也要防缓冲区累积
- 别设为 0 —— 表示无限,等于放弃约束,容易被异常客户端拖垮
KeepAliveTimeout 设定空闲等待时间
这是连接“等下一次请求”的耐心值,不是传输超时,只管空闲状态。
- 推荐 2–5 秒:静态资源多可取低值(如 2),动态接口建议 ≤3
- 超过 5 秒易积压连接,低于 2 秒建连开销上升,得不偿失
- 和 MaxKeepAliveRequests 配合使用——前者管“等多久”,后者管“干几件活”
反向代理场景要额外注意
如果 Apache 做反向代理(比如转给 Tomcat 或 Node.js),客户端长连接和后端长连接是两回事,需单独配置:
- 用 ProxySet keepalive=on 开启与后端的连接复用
- 搭配 ProxyTimeout(建议设为后端响应 P95 的 3–4 倍)
- 避免把客户端 KeepAlive 和后端连接混为一谈

















