我们在一个Apache集群下运行多个Tomcat JVM。如果我们关闭除一个之外的所有JVM,则有时会得到503s。如果我们将 重试间隔增加到180(从重试= 10),问题就会消失。这使我想起 这个问题,Apache如何检测已停止的Tomcat JVM?如果我 有一个包含多个JVM的集群,并且其中一些JVM已关闭, Apache如何发现这个集群?在我阅读的某个地方,Apache使用真实的 请求来确定后端JVM的运行状况。在这种情况下,如果JVM停止,那么 请求会失败(使用5xx)吗?为什么更高的重试值是 有什么不同?你认为引入ping可能有帮助吗?Apache如何检测停止的Tomcat JVM?
如果有人可以解释一下或指向我一些文档,那将是非常棒的。
我们使用Apache 2.4.10,mod_proxy,通过请求LB算法,粘性会话, Keepalive处于开启状态,对于所有平衡器成员,ttl = 300。
谢谢!
:我尝试'ping'与'retry = 10',但没有任何区别。我仍然可以轻松地重现503错误。我在通过'error.log'时注意到的另一件事。如果我有10个Tomcat JVM,其中9个已关闭,而我的好JVM位于列表中的第7位;那么对于6个停止的JVM,Apache会打印出以下错误:“AH01114:HTTP:无法与后端:xxx'连接,直到达到良好的JVM。但请求没有失败。再说一次,如果我设置'retry = 180'或'retry = 60',这个工作很好。当'retry = 10'时,90%的时间失败。 – suv3ndu
您进行测试多长时间?可以说900秒的请求吗?加上ping:'对于HTTP,它导致mod_proxy_http发送一个100-继续到后端(只对HTTP/1.1有效 - 对于非HTTP/1.1后端,这个属性没有作用)'这是来自文档,这就是我建议的ajp (我对你旁边的jvm后台一无所知)。 – zochamx
@zochmax是的,我们使用的是mod_proxy_http,所以'ping'将起作用。我们运行了2-3个小时的所有测试。我打算在Apache中打开更多的日志记录来理解这种行为。 – suv3ndu