為什麼我的美國中部區域伺服器在 Google Cloud 負載平衡器後面陷入困境(最大 CPU)?

為什麼我的美國中部區域伺服器在 Google Cloud 負載平衡器後面陷入困境(最大 CPU)?

我在 Google Cloud Platform 中配置了負載平衡環境。負載平衡器後面有兩台伺服器,它們的配置幾乎相同。一台伺服器位於美國東部地區,另一台伺服器位於美國中部地區。美國東部地區的伺服器可以輕鬆地自行處理整個負載,平均 CPU 使用率約為 45%。每當我將中部區域的伺服器新增至負載平衡器時,只要它連接到負載平衡器,它的 CPU 就會突然飆升並保持在 99% 左右的使用率。

其他背景:伺服器是執行 ASP.NET Umbraco 7 網站的 Windows 伺服器。我還有兩台運行 MariaDB 的資料庫伺服器,一台是主伺服器,一台是複製從伺服器。東部伺服器連接主伺服器(也在東部地區)。中央伺服器連接到從屬伺服器(也在中央區域)。

誰能解釋為什麼中央伺服器會陷入困境?

我嘗試過的事情:

  • 我調整了平衡參數,試圖讓更多請求發送到東部伺服器,認為這可能會減輕中央伺服器的一些壓力。
  • 我嘗試將中央伺服器連接到東部地區的主資料庫。
  • 我上傳了網站文件的新副本,以防某處損壞而導致問題。
  • 我遵循了 Google 的(自動)建議並增加了 RAM(一開始並沒有真正的壓力;它的使用率從未超過 50%)。
  • 我嘗試在中部地區啟動一台全新的伺服器,從頭開始設定。同樣的性能問題。

目前我能想到的最好情況是,該伺服器很難跟上運行狀況檢查器 ping 的速度,但為什麼其他伺服器不努力?是否是由於位於不同地區而導致了該問題?

我還沒有嘗試過的事情。請隨意提出以下優先事項的建議:

  • 將中央伺服器移至另一個區域。
  • 將中央伺服器與其他伺服器一起移至東部地區。
  • 添加CPU

我試圖避免最後一個,因為它似乎是治療症狀而不是找到根本問題。

答案1

首先,Google L7 負載平衡器將嘗試將流量路由到距離請求者最近的後端。在您的情況下,來自東海岸的任何請求都將發送到美國東部後端,而來自北美的所有其他請求將發送到美國中部。這是預期的行為。

您可以透過進入管理控制台 > 網路服務 > 負載平衡並點擊「進階選單」來檢查 L7LB 流量分佈。從這裡轉到“後端服務”並點擊您的負載平衡後端。現在您可以在後端查看每個實例的 RPS。如果您使用 2 個獨立的後端,則可以單獨檢查每個後端。

如果us-central伺服器的容量大得多,CPU使用率就會更高。

關於健康檢查,您可以完全控制檢查的頻率(理想情況下它應該與 us-east 伺服器的頻率相符)。您可以在 Compute Engine > 運行狀況檢查中或從負載平衡器詳細資訊畫面中查看您的運行狀況檢查。

您始終可以在不增加記憶體的情況下增加 CPU,因為這是您目前的問題。然而,這只能解決症狀,不能解決問題。

上述內容解決了在 Google Cloud Platform 方面要尋找的內容。如果兩個執行個體的流量大致相同,請開始監視伺服器的效能,以檢查是什麼使 CPU 使用率達到最大,以確保它實際上是 IIS 而不是其他應用程式。

相關內容