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

ゲームラグ白書 › L5 データセンターのネットワーク機器

ロードバランサーの偏り・ヘルスチェックの誤判定 LB imbalance, bad health checks

原因ID dc-lb-imbalance · 主担当 インフラチーム・ネットワークインフラ · 副担当 ゲーム開発チーム・サーバー開発

図と実験のあるメインページでこのカードを開く →

接続が1台のサーバーだけに集中したり、すでに落ちたサーバーに人を送り続けたりします。

なぜ 振り分けルールが合っていないか、ヘルスチェックが実際の状態を捉えられていない → すると 1台のサーバーだけが過負荷、または落ちたサーバーへの接続試行 → 画面では 一部のチャンネル・一部の人だけスローモーション、接続不可・無限ロード

症状
スローモーション, 接続不可・無限ロード
要因
ストール, パケットロス
誰に起きるか
特定の場所・チャンネル
いつ
接続直後・メンテ明け, 人が集中したとき
担当
主担当 インフラチーム・ネットワークインフラ · 副担当 ゲーム開発チーム・サーバー開発
ゲーム開発チームの対応
ロードバランサーからの確認リクエストに、実際のゲームの状態(ティックの進行、DB接続)を見て応答するヘルスチェックの実装、サーバーの負荷の値も一緒に返す。
インフラチームの対応
ヘルスチェックを実際のゲームの応答を確認する方式に変える、サーバー負荷に基づく振り分け、サーバーごとの接続数の差を監視。
グラフでは
一部だけ高い · サーバーごとの接続数・CPU使用率
確認箇所
ロードバランサー配下のサーバーごとの接続数(ss -s)とCPU使用率を1つのグラフに重ねて確認し、ロードバランサーのターゲットのヘルス状態(AWSはCloudWatchのHealthyHostCount・UnHealthyHostCount)をゲームサーバーの実際の状態と比較
該当する場合
1〜2台のサーバーだけ接続数・CPUがほかのサーバーより大きく高いか、ティックが止まったサーバーがヘルス状態「正常」のまま新しい接続を受け続けている
該当しない場合
サーバーごとの接続数が均等なのに1つのチャンネルだけ重ければ、そのチャンネル内の負荷(「シングルスレッドのエリア過負荷(ホットスポット)」)
確認手段
インフラのツールで確認(ゲームコード不要)
実際の事例
AWS 2025: AWS us-east-1のDynamoDB DNS障害と長引いた復旧

出典

  1. Load Balancing in the Datacenter Google
    単純なラウンドロビンではタスク間の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 データセンターのネットワーク機器

同じ症状(スローモーション)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る