10月30日~11月1日のサーバー障害に関するお知らせ
『War Thunder』は、他のクライアント/サーバーを持つ製品と同様に非常に複雑な分散型インフラストラクチャを持ち、さまざまなサーバー(ログイン認証サーバー、プレイヤーのプロフィールを保存するサーバー、バトルサーバー、分隊サーバー、音声通信サーバーなど)を一台の機器ではなく、数十台に及ぶ機器に分けられ、構成しています!さらに、障害点(破損点)を取り除くためのプロキシサーバーでもある入口のゲートウェイとして多数の物理的機器で構成のマッチングサーバーやキューで待機しているプレイヤーでバトルを生成するサーバーもあります。
今回は2021年10月30日(土)~11月1日(月)の週末に何が起きたのかをさらに詳しくご説明します。ゲートウェイサービスの一つは375日連続稼働していましたが、定期的に行われるリブート(再起動)の際、シングルコアのみを使用し、本来と異なるIPアドレスがプロキシサーバーを経由する誤った設定のバージョンが読み込まれました(判明は日曜日)。当初は、新たに実装された兵器やゲーム内国家、さらには大型アップデートに伴うコミュニティからの注目などによって、サーバーに高い負荷がかかっているように考えられました。私たちは、一刻も早く容量を増加するためにAmazonで入手可能な最も高性能で高価な機器("AWS: Amazon Web Services" ※開発確認)に移行することにしましたが、これは即座に実行できる作業ではなく、移行自体にも時間を要しました。しかし、移行が完了した後も誤った設定やシングルスレッドの問題が解決されていませんでした。サーバーは、このサービスを介したプレイヤーがすべて同じIPであると思い込んでいたため、プレイヤーたちを円滑に処理することができず、マッチングにラグが生じ始めたのです。10月31日06:00(JST)頃、プロキシサーバーのIPアドレスに関する問題を特定し、すぐに修正を行い、再びバトルがマッチするようになりました。一方、日本時間の早朝になるとプレイヤー数が減少し、プロキシがシングルコアで動作していても運用に支障をきたすことはありませんでした。
そして、10月31日(日)プレイヤー及びバトル数の増加に伴い再び過負荷状態となったため、ついに2つ目の設定エラーを突き止めることができました。すでにご利用されているプレイヤーたちに対するサービスへの影響を回避するため、日本時間の夜には誤って設定された機器を速やかに撤去し、新しい機器の導入によりシングルスレッドのプロキシを修正しましたが、この作業にも時間を要しました。なお、シングルコアのパワーは一つでは不十分でしたが、私たちはその機器を多数所有し、アップグレード後は全体の容量の約6%しか使用していない(ピーク時のパワーの20倍を確保していました)ことからより高性能なサーバーを調達する以前も容量は十分であったことをご理解ください。
結論
この障害を受けて、稼働システムとマッチングコードの両面から改善を図るという結論に至りました。まず、Netflixのような大規模なストリーミングサービスでは、サーバーの稼働時間をチェックする特殊なボットを使用していますが、これを参考に稼働時間が閾値を超えた場合はそれらすべてのサーバーを再起動することでサービスの耐障害性を確かめることを計画しています。
また、マッチメイキングのコードの改善はすでに取り組んでおり、過負荷時にも許容範囲内のゲーム動作を維持できるようになります。キューイングには多少時間がかかる場合もありますが、プレイヤーへの応答を停止することなく、サービスを稼働し続けることができます。
それから、国家の数が増加し、バトル可能なゲーム構成も大きな値に達したため、アルゴリズムの最適化が必要になりました。あらゆるプレイヤーとゲーム内の全国家における可能な組み合わせをすべて見つけようとすることはアルゴリズムに二次的な複雑さを招くため、完全で完璧なマッチングではないかもしれませんが、少なくとも十分なマッチングを見つけるための最適化を行う必要があります。
最後に皆さまのご協力とご理解への感謝の気持ちとしてお受け取りください。 |