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

ゲームラグ白書 › L9 サーバーのゲームプロセス

タイマーの一斉発火 Synchronized timers

原因ID sp-timer-burst · 主担当 ゲーム開発チーム・サーバー開発

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

すべてのモンスターのリスポーン、すべてのバフの期限切れ、毎正時の報酬が同じティックに集中すると、そのティックだけ処理が数十倍重くなります。

なぜ リスポーン・期限切れ・報酬・オートセーブのタイマーが同じ時刻にそろっている → すると その1ティックに普段の数十倍の処理 → 画面では 決まった時刻になるたびに一瞬止まる

症状
フリーズ, カクつき
要因
ストール
誰に起きるか
特定の場所・チャンネル, サーバー全体
いつ
一定の周期で
担当
主担当 ゲーム開発チーム・サーバー開発
ゲーム開発チームの対応
タイマーの時刻をランダムに少しずつ分散、複数のティックに分けて処理。
グラフでは
周期的なスパイク · サーバーのティック時間
確認箇所
ティック時間が跳ねた時刻を集めて間隔を確認(毎正時、5分ごとなど)。同じ時刻に動くリスポーン・バフの期限切れ・報酬・オートセーブのタイマー一覧と照合
該当する場合
ティックが毎回同じ時刻か同じ間隔で跳ね、その時刻に一斉に発火するゲームのタイマー処理がある
該当しない場合
周期はあるが、GCログの停止時刻やサーバーのcron・バックアップの時刻と重なるなら、サーバーGCの全停止か定期実行ジョブの側
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要

出典

  1. Timeouts, retries, and backoff with jitter AWS
    Amazon Builders' Library。すべてのタイマー・周期処理・遅延実行の処理にジッターを加えて、同じ時刻に集中する負荷を散らす、複数サーバーの1分周期のリクエストが毎分最初の数秒に集中した事例

あわせて読みたい原因

同じ層:L9 サーバーのゲームプロセス

同じ症状(フリーズ)を起こすほかの層の原因

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