我們在一個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