Linux

如何配置 mod_proxy_balancer 在高負載下優雅地失敗

  • August 29, 2012

我們有一個系統,它在多個 tomcat 前面有一個 Apache 實例。然後這些 tomcat 連接到各種數據庫。我們使用 mod_proxy_balancer 平衡 tomcat 的負載。

目前我們每秒接收 100 個請求,Apache 伺服器上的負載非常低,但由於 tomcats 上的數據庫操作繁重,負載大約為 25%(我估計它們可以處理)。

幾週後有一個事件發生,我們估計我們的請求將顯著增加,可能會增加 10 倍。

我正在盡我所能減少我們的 tomcat 的負載,但我知道我們將耗盡容量,所以我想優雅地失敗。我的意思是,與其嘗試處理所有超時的太多連接,我希望 Apache 以某種方式監控平均響應時間,並且一旦對 Tomcat 的響應時間超過某個門檻值,我想要一個錯誤頁面顯示。

這意味著幸運的使用者仍然會很快得到一個頁面,而那些不幸的使用者很快就會得到一個錯誤頁面。而不是每個人都為他們的頁面等待太久,最終每個人都超時,並且數據庫被從未使用過的查詢淹沒。

希望這是有道理的,所以我一直在尋找有關如何實現這一目標的建議。

謝謝

我將其稱為“抱歉伺服器”。如果您使用的是 Apache 2.2,您可以將另一台主機添加到您的 LB 池作為熱備件,當實際應用程序伺服器達到容量時,您的平衡器會將請求定向到“Sorry Server”,直到應用程序伺服器再次可用。這是一個粗略的想法:

<Proxy balancer://yourapp>
   BalancerMember http://10.0.0.1:8080 retry=5 max=50
   BalancerMember http://10.0.0.2:8080 retry=5 max=50
   BalancerMember http://10.0.0.3:8080 retry=5 max=50
   BalancerMember http://10.0.0.4:8080 retry=5 max=50
   # the hot standby on server2
   BalancerMember http://10.0.0.5:80 status=+H
</Proxy>
<Location /app>
   ProxyPass           balancer://yourapp
</Location>

實際上,您也可以在負載平衡器機器上設置一個額外的虛擬主機,並讓它為“Sorry Server”頁面本身提供服務。希望有幫助:)

引用自:https://serverfault.com/questions/192480