apache负载均衡连接池由mod_proxy动态维护,通过balancermember参数(max/min/acquire/retry)控制单节点连接,proxyset设置集群级maxconnections/ttl/timeout,需启用mod_slotmem_shm等模块保障状态同步。

Apache 中管理负载均衡器的连接池资源,核心是通过 <proxy></proxy> 指令块配合 ProxySet 参数精细控制每个后端节点或整个集群的并发连接行为。它不依赖外部连接池组件,而是由 mod_proxy 在运行时动态维护 HTTP 连接复用与生命周期。
设置单个后端节点的连接限制
在定义 BalancerMember 时,可直接为其指定连接相关参数:
-
max=50:该节点最多保持 50 个空闲连接(即连接池上限) -
min=5:始终保底维持 5 个活跃连接(预热连接,减少冷启动延迟) -
acquire=3000:当连接耗尽时,客户端最多等待 3000 毫秒(3 秒)获取可用连接,超时则返回错误 -
retry=60:节点故障后,60 秒内不再尝试转发请求(配合健康检查使用)
示例配置:
BalancerMember http://192.168.1.101:8080 max=30 min=3 acquire=2000
BalancerMember http://192.168.1.102:8080 max=50 min=5 acquire=3000 retry=60
ProxySet lbmethod=bybusyness
统一配置整个集群的连接策略
若多个后端节点特性接近,可在 <proxy></proxy> 块顶层用 ProxySet 统一设定,避免重复:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
maxconnections=100:整个 balancer 集群最多建立 100 条到后端的并发连接(总和限制) -
ttl=600:空闲连接最长存活 600 秒(10 分钟),超时自动关闭,防长连接堆积 -
timeout=10:代理向后端发起请求时,等待响应的超时时间为 10 秒
注意:maxconnections 是集群级硬限,优先于各 BalancerMember 的 max 值生效。
监控与调优依据
连接池是否合理,需结合 balancer-manager 实时状态验证:
- 访问
/balancer-manager(需已启用且受保护)查看每个节点的 “Busy”、“Idle”、“Conn” 数值 - 若长期 “Busy” 接近
max,说明连接不足,应提升max或优化后端处理速度 - 若 “Idle” 持续为 0 且频繁出现 acquire 超时,表明连接复用率低或后端响应慢,需检查后端性能或调整
ttl/retry
配套必须启用的模块
连接池功能依赖底层共享内存管理,务必确保以下模块已加载:
-
mod_slotmem_shm(必需):提供进程间共享内存,支撑连接状态同步 -
mod_proxy、mod_proxy_balancer、mod_proxy_http(基础三件套)
缺失 mod_slotmem_shm 会导致连接数统计不准、balancer-manager 显示异常,甚至连接复用失效。










