max参数用于限制apache到同一后端服务器的最大并发连接数,是硬性上限,需配合smax、ttl使用;默认值取决于mpm模式,可显式设置如max=15,并在balancermember中为多节点独立配置。
在 apache 虚拟主机中配置 proxypass 的 max 参数,是为了限制与后端服务器(如 tomcat、node.js 或其他应用服务)建立的最大并发连接数,避免后端过载或资源耗尽。这个参数必须配合 smax 和 ttl 等使用,且仅在启用 mod_proxy 和对应协议模块(如 mod_proxy_http)后生效。
确认模块已启用
确保以下模块在 httpd.conf 或主配置中已加载:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
若使用 AJP(如对接 Tomcat),还需启用:
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
同时建议关闭正向代理功能:
ProxyRequests Off
在 VirtualHost 中配置 ProxyPass 并设置 max
max 是硬性上限,表示 Apache 绝不允许同时打开超过该数量的连接到同一后端地址。它受当前 MPM 模式影响(Prefork 下默认为 1,Worker/Event 下默认为 ThreadsPerChild),但可显式覆盖。
示例:将 /api 请求反向代理至 http://192.168.1.100:3000,并限制最大连接数为 15:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
<virtualhost>
ServerName example.com
# 关键:ProxyPass 后直接追加参数
ProxyPass /api http://192.168.1.100:3000/api smax=8 max=15 ttl=60 retry=30
# 必须配对,修正重定向响应头
ProxyPassReverse /api http://192.168.1.100:3000/api
# 可选:保持原始 Host 头传递给后端
ProxyPreserveHost On
</virtualhost>
-
smax=8:软上限,Apache 会按需维持最多 8 个常驻连接; -
max=15:硬上限,即使突发流量,也不会超过 15 条连接; -
ttl=60:超出smax的连接空闲 60 秒后自动关闭; -
retry=30:后端失败后,30 秒内不再尝试连接(避免雪崩)。
⚠️ 注意:
max值不能低于smax,否则会被忽略;若设为 0,则使用 MPM 默认值。
多后端或负载均衡场景下的 max 设置
当使用 balancer:// 定义集群时,max 应放在 BalancerMember 行中,而非 ProxyPass:
<proxy balancer:>
BalancerMember http://192.168.1.101:3000 smax=5 max=12 ttl=60 retry=30
BalancerMember http://192.168.1.102:3000 smax=5 max=12 ttl=60 retry=30
</proxy>
ProxyPass / balancer://myapp/ stickysession=ROUTEID
ProxyPassReverse / balancer://myapp/
此时每个后端节点独立受 max=12 控制,整组连接池上限为 12 × 节点数。
验证配置是否生效
重启 Apache 后,可通过以下方式观察效果:
- 查看错误日志(
error_log)是否有proxy: worker初始化信息,含smax,max,ttl字样; - 使用
ab或wrk施加高并发请求,监控后端连接数(如ss -tn | grep :3000 | wc -l); - 若后端拒绝新连接或返回
503 Service Unavailable,可能max过小或后端响应慢导致连接堆积。
不复杂但容易忽略:max 不是“每秒请求数”,而是“同时存在的 TCP 连接总数”。合理设置需结合后端处理能力、平均响应时间与并发用户量综合估算。










