请求在具有多个后端的apache反向代理中花费很长时间

时间:2018-07-08 11:28:27

标签: apache reverse-proxy vhosts

我将Apache 2.2.34用作反向代理服务器。有超过10个后端。在给定的时间,只有一个后端服务器可以工作,并且它们都以循环方式工作/启用。 虚拟主机的配置与以下类似。

<Proxy balancer://AWSELB>
BalancerMember https://backendEC2_1:443/ retry=60
BalancerMember https://backendEC2_2:443/ retry=60
BalancerMember https://backendEC2_3:443/ retry=60
BalancerMember https://backendEC2_4:443/ retry=60
BalancerMember https://backendEC2_5:443/ retry=60
BalancerMember https://backendEC2_6:443/ retry=60
BalancerMember https://backendEC2_7:443/ retry=60
BalancerMember https://backendEC2_8:443/ retry=60
BalancerMember https://backendEC2_9:443/ retry=60
BalancerMember https://backendEC2_10:443/ retry=60    
</Proxy>
ProxyPass / balancer://AWSELB/ forcerecovery=Off timeout=5
ProxyPassReverse / https://backendEC2_1:443/
ProxyPassReverse / https://backendEC2_2:443/
ProxyPassReverse / https://backendEC2_3:443/
ProxyPassReverse / https://backendEC2_4:443/
ProxyPassReverse / https://backendEC2_5:443/
ProxyPassReverse / https://backendEC2_6:443/
ProxyPassReverse / https://backendEC2_7:443/
ProxyPassReverse / https://backendEC2_8:443/
ProxyPassReverse / https://backendEC2_9:443/
ProxyPassReverse / https://backendEC2_10:443/

当前,我已经在虚拟工作器中设置了以上参数,并使用了重试参数。通过这些设置,请求被切断,但通常最多需要15分钟才能提供页面。
给定方案的最佳虚拟主机配置是什么?

1 个答案:

答案 0 :(得分:0)

以下配置对我有用。

<Proxy balancer://AWSELB>
BalancerMember https://backendEC2_1:443 connectiontimeout=1
BalancerMember https://backendEC2_2:443 connectiontimeout=1
BalancerMember https://backendEC2_3:443 connectiontimeout=1
BalancerMember https://backendEC2_4:443 connectiontimeout=1
BalancerMember https://backendEC2_5:443 connectiontimeout=1
BalancerMember https://backendEC2_6:443 connectiontimeout=1
BalancerMember https://backendEC2_7:443 connectiontimeout=1
BalancerMember https://backendEC2_8:443 connectiontimeout=1
BalancerMember https://backendEC2_9:443 connectiontimeout=1
BalancerMember https://backendEC2_10:443 connectiontimeout=1
</Proxy>

ProxyPass / balancer://AWSELB/
ProxyPassReverse / balancer://AWSELB/

使用 connectiontimeout 参数,如果在1秒内未建立到后端的连接,则选择下一个工作程序,依此类推,直到找到健康的工作程序为止。

请注意,maxattempt,timeout等设置将具有默认值,如Apache 2.2 docs

中所述