한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

遊戲 Lag 白皮書 › L5 資料中心網路設備

負載平衡器分配不均與健康檢查誤判 LB imbalance, bad health checks

原因 ID dc-lb-imbalance · 主要負責 基礎設施團隊(網路基礎設施) · 協同 遊戲開發團隊(伺服器開發)

在含圖解與實驗的完整版中開啟卡片 →

連線全集中到一台伺服器,或持續把人送往已經掛掉的伺服器。

為什麼 分配規則不合適,或健康檢查(health check)看不到實際狀態 → 於是 只有一台伺服器過載,或連線被送往掛掉的伺服器 → 畫面上 只有部分頻道、部分人出現慢動作,或連不上/無限讀取

症狀
慢動作, 連不上/無限讀取
因素
停滯, 遺失
誰會遇到
特定地點/頻道
何時
剛登入/維護剛結束, 人潮湧入時
負責單位
主要負責 基礎設施團隊(網路基礎設施) · 協同 遊戲開發團隊(伺服器開發)
遊戲開發團隊要做的事
實作健康檢查,依實際遊戲狀態(tick 是否推進、DB 連線)回應負載平衡器的檢查請求,並一併回報伺服器負載值。
基礎設施團隊要做的事
把健康檢查改成確認實際遊戲回應的方式,依伺服器負載分配,監控各伺服器連線數的差距。
圖表上
只有部分偏高 · 各伺服器的連線數與 CPU 使用率
查看位置
把負載平衡器後方每台伺服器的連線數(ss -s)與 CPU 使用率疊在同一張圖上,並將負載平衡器的目標健康狀態(AWS 為 CloudWatch 的 HealthyHostCount、UnHealthyHostCount)與遊戲伺服器的實際狀態比較
符合的跡象
只有一兩台伺服器的連線數與 CPU 明顯高於其他伺服器,或 tick 已停住的伺服器仍以健康狀態「正常」留著,持續接收新連線
不符合的跡象
各伺服器連線數平均、只有一個頻道變慢時,是該頻道內部的負載問題(「單執行緒區域過載(熱點)」)
確認方式
用基礎設施工具確認(不需要遊戲程式碼)
實際案例
AWS 2025: AWS us-east-1 DynamoDB DNS 事故與漫長的復原

出處

  1. Load Balancing in the Datacenter Google
    單純的 round robin 會讓各工作之間的 CPU 使用量相差最多 2 倍,後端把負載附在回應與健康檢查中回傳的加權分配,表示不再接收請求的 lame duck 狀態
  2. Health checks for Network Load Balancer target groups AWS
    健康檢查預設間隔 30 秒、失敗 2 次即移出,UDP 服務是用 TCP、HTTP 健康檢查確認,建議配置成能反映實際服務狀態
  3. CloudWatch metrics for your Network Load Balancer AWS
    HealthyHostCount、UnHealthyHostCount:判定為健康、不健康的目標數

相關原因

同一層:L5 資料中心網路設備

同一症狀(慢動作)在其他層的原因

查看含圖解與實驗的完整版卡片