我正在尝试在两个 Apache http web 服务器之间实现负载平衡。我使用 Apache 的 mod_proxy_balance 创建了一个负载平衡器。
当我运行我的客户端(每秒生成约 100 个线程并尝试浏览网站)时,几秒钟后我开始收到几个线程的 502 和 503 错误响应代码。其他几个线程运行正常。
我觉得负载均衡器可能超载了,但我不太确定。有人能告诉我如何解决这个问题吗?谢谢!
我的代理平衡器设置:
<IfModule mod_proxy_balancer.c>
<Proxy balancer://hgcc13.org>
BalancerMember http://hgccvm90.org/ loadfactor=1
BalancerMember http://hgccvm92.org/ loadfactor=1
</Proxy>
<Location />
ProxyPass balancer://hgcc13.org/
</Location>
</IfModule>
当我在代理中看到error_log时,首先我发现
“连接后端服务器超时”,然后我看到
“ ap_proxy_connect_backend 禁用 worker”,然后
“所有工作人员都处于错误状态”,
上述 3 条消息在短时间内重复出现。然后我发现只有
“do_ypcall:clnt_call:RPC:无法发送;errno = 操作不允许”。
我只做了 5 分钟的实验
答案1
我怀疑问题出在后端服务器,而不是代理本身。
502 错误表明平衡器成员缺乏响应。
503 错误表明某个 Apache 服务已达到其MaxClients
设置 - 这可以是代理,但如果是,那么我怀疑这只是因为它正在等待其他请求从无响应的后端返回。
server reached MaxClients
通过检查每个系统的 Apache 错误日志中的“ ”来验证哪个系统达到了其限制。
您可能需要调整平衡器成员的超时(ProxyTimeout
指令或线路timeout=x
上的设置BalancerMember
)和/或MaxClients
服务器(和相关的 MPM 设置)。