Apache负载均衡通过配置适配异步请求,需启用mod_proxy、mod_proxy_http、mod_proxy_wstunnel等模块,调优ProxyTimeout、keepalive等参数,并采用bybusyness或bytraffic调度策略实现可靠转发。

Apache 负载均衡本身不直接“处理”异步请求,但能可靠地转发异步 HTTP 请求(如 AJAX、Fetch、WebSocket 升级请求等)到后端服务。关键在于配置需适配长连接、超时控制和协议兼容性,而非启用某种“异步模式”。
确保模块支持异步通信场景
异步请求常伴随长轮询、SSE 或 WebSocket,Apache 需启用对应模块并避免过早中断连接:
-
必须启用:
mod_proxy、mod_proxy_http、mod_proxy_wstunnel(WebSocket 必需)、mod_proxy_balancer -
建议启用:
mod_slotmem_shm(共享内存,支撑 balancer-manager 状态同步)、mod_lbmethod_bybusyness(按繁忙度调度,更适合长连接场景) - 禁用或谨慎使用
mod_reqtimeout的默认短超时,否则会中断 SSE 流或 WebSocket 握手
配置长连接与合理超时参数
默认超时值(如 Timeout 60)对异步请求极易导致连接被 Apache 主动关闭。需在 <Proxy> 或虚拟主机中显式调优:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 设置代理级超时:
ProxyTimeout 300(单位秒,建议 ≥300) - 禁用后端连接复用干扰:
ProxySet keepalive=On+ProxySet ttl=600 - 为 WebSocket 显式启用隧道:
ProxyPass /ws/ ws://backend1:8080/ws/(注意ws://协议前缀) - 若后端是 Node.js/Spring WebFlux 等异步框架,建议添加头透传:
RequestHeader set X-Forwarded-Proto "https" env=HTTPS
选择适合异步流量的负载策略
轮询(byrequests)在高并发长连接下易造成节点连接数失衡;推荐以下两种:
-
按连接数调度(bybusyness):动态将新请求导向当前活跃连接最少的后端
配置:ProxySet lbmethod=bybusyness -
按流量调度(bytraffic):适合 SSE 或流式响应场景,避免大响应体压垮单节点
配置:ProxySet lbmethod=bytraffic - 避免使用
ip_hash(除非需会话粘滞),它会阻碍负载动态再平衡
路径级转发适配异步接口
可结合 RewriteRule 实现语义化路由,把异步路径精准分发:
- 将所有
/api/stream和/events转到流式后端组:RewriteRule ^/(api/stream|events) balancer://stream-backend%{REQUEST_URI} [P,L] - 将 WebSocket 连接(
Upgrade: websocket)单独路由:RewriteCond %{HTTP:Upgrade} =websocket [NC]RewriteRule /(.*) balancer://ws-backend/$1 [P,L] - 务必在规则末尾加
[P](proxy)标志,否则仅重写 URL 不触发转发

















