26/08/15: Update on disconnections and server stability <公式Webブログ>
開発者: Alessandro/アレッサンドロから、サーバーの安定性、および接続切断問題に関する最新の情報が発表された。
ここでは、公式Webブログの内容を元に、これらの内容を詳しく解説してゆきます。
※技術的な話題、専門用語の多いの記事となっています。
発生している問題:
- 切断、遅延(ラグ)
- 約50人規模の一斉切断
- 再接続時の二重切断
公式の対応01 - BitCraftのバックエンドホストにメトリクスを追加
BitCraftのバックエンドホスト(サーバー)に、新しくいくつかのメトリクス(*)が導入された。
- (*メトリクス/Metrics: 評価基準。サーバーが「いまどんな状態であるか」を表す数値データ)
これらは、不具合が発生する要因の特定につながるデータを得るためのものである。
公式の対応02 - アイドルタイムアウトを延長
アイドルタイムアウト(*)の設定が、30秒から5分に延長された。
- (*アイドルタイムアウト/Idle Timeout:
ゲーム上で何も操作が行われていない、何も通信が行われていない状態が一定時間続いたときに、接続の終了を行う仕組み)
タイムアウトについて
このタイムアウト設定は、クライアント側(*)にping(*)を送信してから、pong(*)が返ってくるまでどれくらいの時間待つかを決定するために使われている。
- (*Ping/ポン: "まだそこにいますか?"という問いかけ)
- (*Pong/ポン: "まだここにいますよ"という応答)
- (*Ping-Pong/ピン-ポン通信:
卓球のラリーをイメージ。このやり取りが一定時間途切れていると、その接続は終了したものとみなされる(タイムアウト))
- (*クライアント側/client Side:
ここではプレイヤー、ユーザー側のPCにインストールされ実行されているゲームアプリのことを指している)
このタイムアウト設定は、”クライアント側が正常ではない形で接続を終了(*)”をしてしまう事態への対応として設けられている。
- (*例: ゲームのクラッシュ, PCの電源切断など)
サーバー側が担える接続数には上限があり、終了の処理が無いままいつまでも維持させ続けるわけにはいかないためである。
回線の低速化について
タイムアウト設定の延長は、インターネット回線が低速なプレイヤー、特にBitCraftサーバーへの通信経路の状態が良くない回線を利用しているプレイヤーに対しては一定の効果があったとされている。
普段は快適にインターネットを利用できていても、BitCraftサーバーとISP(*)、および自身のPCのあいだを繋ぐ通信経路上に低質な回線が挟まっていると、パケット損失(データの欠落)を補うためのWebSocket(*)、およびTCP(*)の働きによって、低速な回線接続とほぼ同様の挙動としてあらわれてしまう。
- (*ISP(Internet Service Provider/インターネットサービスプロパイダ): それぞれのPCやスマートホンなどの端末にIPアドレスを割り当て(発行し)、インターネットでの通信を行えるようにする事業者。プロパイダ)
- (*WebSocket/ウェブソケット: サーバー側とユーザー(クライアント)側がオンライン状態であるとして繋がり(コネクション)が確立されることで、低コストでの双方向通信を可能にさせている通信規約/プロトコル。*双方向通信: 互いにデータを送り合うことのできる環境のこと。旧来のHTTPでは、クライアント側からのリクエストがなければサーバー側のアクションを引き出せなかった)
- (*TCP/Transmission Control Protocol: 送信されるデータが漏れなく受け取られたかどうかを確認しながら行うための通信規約/プロトコル。データの欠落(パケット損失)を検知して再送信を行わせる、バラバラに送られてくるデータを正しい順番に並べ替える、データが運ばれる量や速度を調節して損失を防ぐなどの働きを行う。信頼性が高い代わりに低速)
プレイヤー数の多い、通信量が増加する時間帯は、接続の混雑や"帯域幅制限/スロットリング"(*)が発生しやすい可能性がある。
また、タイムアウトはワールド上のデータを読み込むロード画面において発生しやすくなっていた。
資源や建物、他プレイヤーの情報が送信される中に"ping"のメッセージが挟まっているため、クライアント側はこうした大量のデータのダウンロードを処理し終えてからでなければ"pong"の応答ができなかった。
応答を返せずにタイムアウトの時間が過ぎ、こうしてクライアント側の接続が途切れたと判断される結果となっていた。
- (*スロットリング/Throttling: ISPなどの通信事業者によるデータ送受信量の制限措置。データ通信量が過剰な接続に対し、回線の独占や混雑を防止するために行われる調整)
タイムアウト延長による結果
今回でタイムアウト設定の延長により、クライアント側が大きなダウンロードで忙しい(ビジー)状態であっても、自身が稼働中であることを示すハートビート(*)のメッセージを送信できるようになり、低速状態による切断の問題は解消された。
- (*ハートビート/Heartbeat: 接続が途切れることを防ぐため、一定間隔で短いデータ送信を行うこと)
また、
タイムアウト延長による別の問題
タイムアウト