為什麼我的美國中部地區伺服器在我的 Google Cloud 負載平衡器後面掙扎(最大 CPU)?
我在 Google Cloud Platform 中配置了負載平衡環境。負載均衡器後面是兩台伺服器,它們的配置幾乎相同。一台伺服器位於美國東部地區,一台位於美國中部地區。美國東部地區的伺服器可以輕鬆地自行處理整個負載,平均 CPU 使用率約為 45%。每當我將中心區域的伺服器添加到負載均衡器時,只要它連接到負載均衡器,它的 CPU 就會突然飆升並保持在 99% 左右的使用率。
附加背景:伺服器是執行 ASP.NET Umbraco 7 網站的 Windows 伺服器。我還有兩台執行 MariaDB 的數據庫伺服器,一台是主伺服器,一台是複制從伺服器。東部伺服器連接到主伺服器(也在東部地區)。中央伺服器連接到從屬伺服器(也在中央區域)。
誰能解釋為什麼中央伺服器正在苦苦掙扎?
我嘗試過的事情:
- 我調整了平衡參數,試圖讓更多請求發送到東部伺服器,這可能會減輕中央伺服器的一些壓力。
- 我嘗試將中央伺服器連接到東部地區的主數據庫。
- 我上傳了站點文件的新副本,以防某處出現損壞導致問題。
- 我遵循了Google的(自動)建議並增加了 RAM(一開始並沒有真正強調;它的使用率從未超過 50%)。
- 我嘗試在中部地區啟動一個全新的伺服器,從頭開始配置。同樣的性能問題。
目前我能想到的最好的結果是伺服器很難跟上執行狀況檢查器的 ping,但是為什麼其他伺服器不努力呢?是否存在導致問題的不同區域?
我還沒有嘗試過的事情。隨意提出這些優先事項:
- 將中央伺服器移動到另一個區域。
- 將中央伺服器與另一台伺服器一起移動到東部地區。
- 添加 CPU
我試圖避免最後一個,因為它似乎是在治療症狀而不是找到根本問題。
首先,Google L7 負載均衡器將嘗試將流量路由到請求者最近的後端。在您的情況下,來自東海岸的任何請求都將發送到 us-east 後端,而來自北美的所有其他請求都將發送到 us-central。這是預期的行為。
您可以通過轉到管理控制台 > 網路服務 > 負載平衡並點擊“高級菜單”來檢查 L7LB 流量分佈。從這裡轉到“後端服務”並點擊您的 LB 後端。您現在可以在後端查看每個實例的 RPS。如果您使用 2 個單獨的後端,則可以單獨檢查每個後端。
如果 us-central 伺服器的容量更大,CPU 使用率會更高。
關於健康檢查,您可以完全控制檢查的頻率(理想情況下,它應該與 us-east 伺服器的頻率相匹配)。您可以在 Compute Engine > Health checks 或負載均衡器詳細資訊螢幕中查看您的執行狀況檢查。
您始終可以在不增加記憶體的情況下增加 CPU,因為目前這是您的問題。然而,這只解決了症狀而不是問題。
以上解決了在 Google Cloud Platform 方面要尋找的內容。如果到兩個實例的流量大致相等,則開始監視伺服器的性能以檢查使 CPU 使用率最大化的原因,以確保它實際上是 IIS 而不是另一個應用程序。