フォートナイト

期間限定モード「プレイグラウンド」障害の事後分析

2018.7.18
作成 フォートナイトチーム
皆さん、こんにちは

6月27日午後5時頃に期間限定モード「プレイグラウンド」をリリースしましたが、非常に多くのアクセスが集中したためマッチメイキングサービスに過度の負荷がかかり、プレイグラウンドおよびその他の各モードが正常にプレイできない状態となりました。その後、復旧へ向けて全力で対処を行い、7月2日の朝にようやくプレイグラウンドの再リリースにこぎつけました。

何が起きたのか?
マッチメイキングを担うシステムであるマッチメイキングサービス(MMS)は、ホストとなる専用サーバー上でプレイヤー同士をマッチングさせる役割を持っています。マッチ毎にノードが割り当てられ、それぞれのノードに対応する専用サーバーのリストが存在します。リスト内のサーバーは各地域のフリーサーバーの数に応じて分配されます。プレイヤーがMMSに接続すると該当地域のサーバーにリクエストが送信され、そのプレイヤーにノードが割り当てられます。そして、そのノードのリストから、該当地域のフリーサーバーが選び出されます。

プレイグラウンドモードでは、100人ではなく1~4人のプレイヤーでのマッチメイキングとなるため、パーティーの規模によってマッチ数は通常の25倍から100倍にも上ることになります。物理CPU毎の仮想サーバー数をある程度抑えることも可能ですが、それでも他のモードの15倍ほどのサーバーが必要になってきます。サーバー容量の確保はできたものの、各ノードに対応するリストのボリュームも15倍に膨れ上がることとなりました。

MMSノードのリストから該当地域のフリーサーバーが見つからない場合、別のノードのローカルリストからフリーサーバーの検索を行います。リストのボリュームが15倍であれば、その分処理にも時間がかかってしまいます。特に、全てのノードが15倍のボリュームとなっている状況でそれぞれのリストを検索しなければならない場合、その処理時間は膨大なものとなってしまいます。プレイグラウンドのリリース時、非常に多くのアクセスが集中にしたことでMMSノードのローカルリストがすぐに一杯となり、システムのリフレッシュが間に合わない事態となりました。そのため、各ノードが別のノードへサーバーのリクエストを送信するもサーバーが存在しない、あるいはリストからのサーバー選出に膨大な時間がかかってしまう、という状況に陥ったのです。CPUが各リクエストの処理を完了できず、その結果システム停止へ至りました。

どのように対処したのか?
まず、プレイグラウンド停止後に同モードのMMSの切り離しを行いました。これにより他のゲームモードへ影響を与えるのを避けることができ、プレイグラウンドの復旧作業を行いつつ各種調整が可能となりました。同モードのシステムの大幅な再構築を行い、テストを繰り返した末、再リリース可能な水準へ到達することができました。

今回のトラブルの原因はローカルリスト検索時の過負荷であるため、別のノードによるリスト検索に対応できる処理能力を追加することが解決策でした。ノードが過負荷状態にある場合、稼働率が低い別のノードに容量を切り替える仕組みにしたことで、特定の地域のサーバーが一杯になり別のノードのローカルリストから検索しなければならない、というケースが発生するリスクが大幅に減少しました。今のところ、フォートナイト バトルロイヤルではこうした問題は発生していませんが、上記のシステムをMMSに組み込む予定です。

MMS再構築に伴い、サーバー負荷テストを徹底的に行いました。これは通常のサーバー稼働率を大幅に超える状況を想定していたためです。数百万人のユーザーが同時にプレイグラウンドのMMSシステムへアクセスした際にサーバーが耐えられるかをテストする必要がありました。調整からテスト、評価までの一連のサイクルには毎回数時間ほどを要しましたが、その甲斐あって大規模なアクセスに耐えられる水準にまで改善できました。また、プレイグラウンド復旧の障害となり得るエッジケースの不具合特定および修正も完了しました。

今回の事態を受けて
マッチメイキングシステムおよびその耐久性について学ぶことができました。プレイヤー規模に基づき、最大限の処理能力と容量を準備してきたつもりでしたが、ローカルリストが一杯になるほどのサーバーアクセスは予測できていませんでした。

プレイグラウンド再リリースに伴い、サーバーへの負荷を減少させるため、同モードを各地域およびプラットフォームで段階的にリリースするようにしました。しかし、有効な地域に設定を切り替えることで同モードをプレイできてしまい、サーバー負荷の問題に対処するために結局は再リリースが遅れてしました。とはいえ、アジアサーバーにおけるクラウドリソースは非常に良い状態です。今回の件にあたりサポートしていただいたクラウドパートナーの皆様には大変感謝しています!

プレイグラウンドの安定化および復旧は予想していたよりも困難でしたが、複雑なシステムは予想外のトラブルに陥ることがあるという教訓を得ることができました。今回、MMSの改善が急務となりましたが、こうした調整が功を奏し、今後も広く皆様にフォートナイトを楽しんでいただけることを願っております。