keep-alive 需分层设值、前后端对齐、mpm 匹配:web api 设 3–6 秒,静态资源 8–12 秒,弱网 1–3 秒,websocket 60–90 秒;须同步配置 keepalive on、maxkeepaliverequests(50–200)、event mpm;反向代理需 proxypass keepalive=on 及 proxyset 参数;https 要启用 sslsessioncache 并禁用 sslcompression。

Keep-Alive 不是“开就变快”,而是要让连接复用收益最大化、空闲开销最小化。关键在分层设值、前后端对齐、MPM 匹配,而不是统一调大或关掉。
按业务类型设 KeepAliveTimeout
超时时间必须贴合请求特征和网络环境:
- Web API 或前后端分离项目:设为 3–6 秒。响应快、请求短,过长会卡住 worker;太短又浪费复用机会。
- 静态资源密集型站点(JS/CSS/图片):可设 8–12 秒。HTTP/1.1 下复用价值高,延长一点能显著减少建连次数。
- 移动端或弱网场景:压到 1–3 秒。运营商 NAT 通常 60–120 秒回收连接,Apache 必须更早释放,避免复用已断链。
-
WebSocket 或长轮询代理:设 60–90 秒,并配
MaxKeepAliveRequests 0,仅限mod_proxy_wstunnel场景。
必须同步调优的配套参数
单改 KeepAliveTimeout 没用,这三个参数必须一起看:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
KeepAlive On:必须显式开启,否则所有超时设置无效。 -
MaxKeepAliveRequests:建议设 50–200。API 类取低值(如 50),静态类取高值(如 150);禁用0(无限)除非明确是长连接服务。 -
MPM 模式:高并发下必须用eventMPM。prefork 下每个连接占一个进程,KeepAliveTimeout 设 5 秒 = 5 秒内无法释放进程,极易耗尽资源。
反向代理场景要单独处理后端连接
虚拟主机里的 KeepAlive 只管客户端到 Apache 的连接,不影响 Apache 到后端(如 Tomcat、Node.js)的连接。后者需通过 ProxyPass 显式配置:
- 写法必须是:
ProxyPass /api http://127.0.0.1:8000/api keepalive=On(keepalive=On要直接跟在指令末尾)。 - 必须配
ProxySet keepalive_timeout=5(值 ≤ 后端的connectionTimeout),再加ttl=45、max=20控制连接池规模。 - 后端也要匹配:Tomcat 的
keepAliveTimeout建议 ≥ Apache 值,且disableUploadTimeout="false"。
HTTPS 和移动端要额外注意
HTTPS 下 TLS 握手开销会让 Keep-Alive 收益打折,移动端还面临 NAT 断连问题:
- 启用
SSLSessionCache(如shmcb:/var/cache/apache2/ssl_scache(512000)),避免每次复用都重做完整握手。 - 禁用
SSLCompression off,既防攻击也提升复用路径效率。 - 移动端建议
KeepAliveTimeout设 2–4 秒,并同步收紧ProxySet keepalive_timeout,防止前端复用“假死连接”。
不复杂但容易忽略。










