ゲームラグ白書 › L13 サーバー構成と運用
大量のマクロ・ボット Bots and macros
原因ID in-bots · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 インフラチーム・ネットワークインフラ
図と実験のあるメインページでこのカードを開く →
ボットは人よりはるかに頻繁にリクエストを送り、サーバーのスループットを食いつぶします。
なぜ 狩り・移動・取引を休まず繰り返すボットが大量に接続 → すると サーバーの処理量とDB負荷が増加 → 画面では 特定の狩場やサーバー全体が重くなる(スローモーション・入力遅延)
- 症状
- スローモーション, 入力遅延
- 要因
- ストール
- 誰に起きるか
- サーバー全体, 特定の場所・チャンネル
- いつ
- 常に, 夜のピーク時間帯
- 担当
- 主担当 ゲーム開発チーム・サーバー開発 · 副担当 インフラチーム・ネットワークインフラ
- ゲーム開発チームの対応
- ボット検知、アカウント・キャラクターごとのリクエスト頻度の制限。
- インフラチームの対応
- IPごとの接続・リクエスト頻度の制限(ネットカフェやモバイル回線は複数人が1つのIPを使うので余裕を持たせる)、ファイアウォール・WAFでボットのアドレス帯を遮断。
- グラフでは
- 一部だけ高い · アカウント・IPごとの毎秒リクエスト数
- 確認箇所
- ゲームサーバーのログで、アカウント・キャラクターごとの毎秒リクエスト数の分布と上位リストを確認。コード側のメトリクスがなければ、ファイアウォール・WAFのIPごとのリクエスト数
- 該当する場合
- 少数のアカウント・IPが人間には不可能な頻度で休みなくリクエストしており、それらを制限するとサーバー負荷が目に見えて下がる
- 該当しない場合
- リクエストがアカウント間で均等に分散していれば、通常の人数増加側(ティックバジェット超過、オートスケーリングの遅れ)
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
出典
- Using rate-based rule statements in AWS WAF AWS
IPなどのキーごとにリクエスト数を数え、決めた時間枠内で多すぎればレート制限 - RFC 6269: Issues with IP Address Sharing IETF
複数の契約者が1つのIPを共有していると、IP単位の遮断・制限がほかのユーザーまで巻き込む
あわせて読みたい原因
同じ層:L13 サーバー構成と運用
同じ症状(スローモーション)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る