[D2R] これまでの取り組みと今後の展開

「ディアブロ 2 リザレクテッド」はリリース以来、複数のサーバー問題が発生していますが、これらの問題の原因、これまで行った対策、そして今後の展開について公式ブログにてアナウンスが公開されました。内容を要約して掲載します。


ディアブロ 2 リザレクテッド:停止の説明、これまでの取り組み、今後の方針について

  • サーバー停止の原因は1つではなく、問題が発生する度に緩和策と長期的なアーキテクチャの変更を行っている。
  • 幾らかのプレイヤーの進捗がサーバークラッシュにより損失されたが、今後はサーバークラッシュによる損失は数分程度に留める。この問題は今後も取り組む。

サーバーの問題について

  • サーバーデータベースの仕組み
    • 全てのキャラクター情報や進捗状況を管理するグローバルデータベースが存在する。
    • グローバルデータベースの負荷と遅延を軽減するために、NA、EU、アジアの各地にキャラクター情報や進捗状況を保存する個別のデータベースがあり、各地のデータベースからグローバルデータベースに定期的に書き込みを行っている。
    • プレイヤーのほとんどのプレイは地域のデータベースに書き込まれる。
  • 10月9日(土)に発生したサーバーダウンの流れ
    • 10月9日:太平洋時間9日の朝、大幅なトラフィックの急増によりグローバルなサーバー停止が発生した。
    • 10月9日:サーバー停止に加え、8日に行ったアップデートが原因で、グローバルデータベースに負荷がかかりタイムアウトが発生した。
    • 10月9日:8日に行ったアップデートを取り消し、10日に向けてサーバー負荷を軽減と同時に原因調査のためのスペースを確保した。
    • 10月10日:9日に行った対策だけでは不十分であることが判明、更にトラフィックが増加し、別の障害が発生した。
    • 10月10日:すぐに復帰させたが、プレイヤーの活動がピークであったため、再びすぐにサーバーが停止した。
    • 10月11日:グローバルデータベースの切り替えを行い、データベースの再接続問題を解決した。
    • 10月12日:同時接続数が急増し、データベースのパフォーマンスが低下したため、小規模な修正を実施した。

なぜ問題が起こったのか

  • ディアブロ 2 リザレクテッドにはオリジナル版を忠実に再現するために多くのオリジナルのプログラムを残しているが、これが現代のプレイヤーの行動に対応できていない。
  • 現代のプレイヤーは、オリジナル版当時に比べ、動画などで様々なプレイ方法を知ることができる。
  • それらはゲームの作成・ロード・削除を連続して行うため、データベースに負荷がかかる。
  • このような状況は予想していたが、βテストから予想していた範囲を大幅に上回った。
  • また、全体的にグローバルデータベースへ保存する頻度が高すぎて、これも負荷を増やすことになっていた。
  • そのため、保存頻度を少なくしており、現在処理方法を完全に変更するためのプログラムを作成中。これにより、サーバー負荷が大幅に軽減される見込み。

進行状況の損失について

  • 一部のプレイヤーが経験した進行状況の損失は、地域データベースとグローバルデータベースの両方でキャラクターをロックする方法によるもの。
  • サーバーの停止中にデータベースが落ちてしまうと、キャラクターの情報が地域データベースに閉じ込められてしまい、グローバルデータベースに移す方法がなかった。
  • これを対処するために、グローバルデータベースに保存されていない変更を全て開放した。それにより、グローバルデータベースで発生するために一部の進行状況が失われた。ゲームを復元するため長時間停止するよりも、継続してプレイできるようにすることを優先した。
  • 今後は、サーバーがクラッシュした際にデータが失われたとしても、数分程度に留めることができると考えている。

現在取り組んでいること

レート制限

  • ゲームの作成や参加に関するデータベースへの操作を制限している。
  • 何度もゲームに参加、作成してい場合ある時点でレート制限がかかるようにして、データベースへの負荷を軽減している。
  • これはあくまで現時点での対応策で、長期的な解決策ではないと考えている。

ログインキューの作成

  • プレイヤーが活性化していること、複数のプラットフォームが追加されたこと、スケールアップに伴うその他の問題により、今後も小さな問題が発生する可能性がある。
  • そのような問題に対処するために、World of Warcraftで行ったような「ログインキュー」を作っている。
  • これにより、その時点で安全なプレイヤー人口を維持することができ、ゲームが完全にダウンする前に対処できる。
  • 修正を行うたびに、人口の上限を増やすことができる。
  • ログインキューはバックエンドには部分的に実装されており、PCでは近日中に完全に実装予定。

その他

  • 重要な機能の一部を小さな部品に分割する作業を進行中しており、これにより負荷の軽減を図れる。
  • 問題のリアルタイム監視、診断、修正にはD2RチームだけでなくBlizzard全体で多くのスタッフが活動している。
  • 引き続きフィードバックは公式フォーラムに、バグ報告はバグレポートフォーラに、トラブルシューティングはテクニカルサポートにて報告をお願いしたい。
  • 今後も進捗状況はフォーラムを通じて発信する。

ソース:Diablo II: Resurrected Outages: An explanation, how we’ve been working on it, and how we’re moving forward