2009年12月13日に実施した第9回日本情報オリンピック予選は予選実施システムに障害が発生し,参加者の皆さまにご迷惑をおかけして,大変申し訳ありませんでした.
原因とその対策をご報告いたします.
なお,ご報告が遅くなりましたことをお詫び申し上げます.
障害 |
- ・障害1
-
競技開始直後に多くの参加者がログインできないか,
ログインしても正常に問題を表示できなかった.
14時40分頃まで,
一部の参加者は通常通り競技できたものの,
大多数の参加者はログインできないか,
ログインしても正常に問題を表示できない状況が継続した.
- ・障害2
-
予選競技実施システムの挙動が安定した14時40分以降に,
一部の参加者の一部の解答がアップロードできないという現象が発生した.
|
経緯 |
-
http サーバの秒間処理リクエスト数の上限を 200 としていたが,
競技開始直後のリクエスト数は 200 を大きく上回り,
時間が経過しても待機に回った処理数が減らなかった.
そのため,
多くの参加者がログインできないか,
ログインしても正常に問題ページを表示できなかった.
-
Web サーバは正 Web サーバと副 Web サーバの2台構成であり,
正 Web サーバに障害が発生した際に副 Web サーバに切り替わるという運用であった.
競技開始直後に正サーバが前項1のような状況になったため,
ロードバランサが正 Web サーバに障害が発生したと判断し,
制御を副 Web サーバに切り替えた.
しかし,
ロードバランサは,
いったん副 Web サーバに切り替えた後でも,
正 Web サーバが復旧をすれば正 Web サーバに割り振るという設定だったため,
(正 Web サーバが過負荷で反応しなくなる) ⇒
(副 Web サーバに切り替わる) ⇒
(正 Web サーバが反応する) ⇒
(正 Web サーバに切り替わる)
が繰り返された.
-
下記2つの対応を実施.
- 正 Web サーバを停止
- 副 Web サーバの http サーバの秒間リクエスト処理数上限を 1000 に設定し直す
これらの対応が完了したのは14時40分頃であった.
これらの対応後はほぼ正常に稼働した(障害2は除く).
ただし,
14時30分頃にメールで問題を配布しており,
このためにアクセス数が減少したと推察される.
そのため,
秒間リクエスト数の上限の変更がどの程度効果があったかは不明.
-
正 Web サーバと副 Web サーバの内容が同期されていなかったことが原因で,
14時40分以降に,
一部の参加者が一部の解答をアップロードをできないという現象が発生した.
正 Web サーバと副 Web サーバの同期をとり,
その後は正常に稼動した.
|
原因 |
- ・障害1
-
JOI2009/2010予選競技のトップページには,
6つの問題に対する解答提出状況一欄が含まれている.
また,
各問題のページには,
その問題に対する解答提出状況一欄が含まれている.
これらのページへのリクエストに応答するには,
提出状況をデータベースに問い合せる必要があり,
提出状況が含まれていないページと比較して処理に時間がかかる.
負荷テストでは,
予選競技のトップページの秒間処理リクエスト数は最大で 214.4 であったため,
http サーバの秒間処理リクエスト数の上限を 200 にしたが,
実際にはそれを大きく上回るリクエストがあり,
時間が経過しても待機に回った処理数が減らなかった.
- ・障害2
-
JOI2009/2010予選競技実施システムは,
ロードバランサが正 Web サーバから副 Web サーバに切り替えることがあっても,
副 Web サーバから正 Web サーバに切り替えることがないことを前提に,
正 Web サーバから副 Web サーバへの同期のみをとり,
副 Web サーバから正 Web サーバへの同期はとらないという設計であった.
しかし,
ロードバランサは,
いったん副 Web サーバに切り替えた後でも,
正 Web サーバが反応すれば正 Web サーバに割り振るという設定であった.
そのため,14時40分に副 Web サーバだけで運用を再開した時点で,
正副間で一部のデータの同期がとれていなかった.
開発・運用業者がデータセンターに適切に指示していたにもかかわらずデータセンターが設定を誤ったのか,
もともとの指示が不適切だったのかは判明していない.
|
対策 |
- JOI2009/2010予選では,
競技開始後に MyPage を再読込みすれば MyPage に予選競技へのリンクが表示された.
JOI2010/2011予選では,
競技開始前より MyPage に予選競技へのリンクおよびボタンを表示することにより,
競技開始時の MyPage の再読込みする必要をなくした.
競技開始前に予選競技ページに移動しようとすると,
「予選競技待機ページ」に移動する.
- JOI2010/2011予選では競技開始後15分間は,
- 予選競技のトップページに解答状況一欄を含めない
- 予選競技トップページから移動する各問題ページには,
その問題の解答提出機能および解答状況一欄を含めない
- 解答を提出する場合は,
解答提出機能および解答状況一欄を含まない問題ページから,
解答提出機能および解答状況一欄を含む問題ページに移動する
- 予選競技のトップページより問題および入力データを一括ダウンロードできるようにした
とした.
- JOI2009/2010予選では,
正 Web サーバ・副 Web サーバ・データベースサーバの3台構成で,
副 Web サーバは正 Web サーバのバックアップであった.
JOI2010/2011予選では,
Web サーバ 1・Web サーバ 2・Web サーバ 3・データベースサーバの4台構成で,
Web サーバ 1 と Web サーバ 2 で機能分担を行い,
Web サーバ 3 は Web サーバ 1 および Web サーバ 2 のバックアップとする.
- 各サーバの CPU コア数とメモリ容量を,
JOI2009/2010予選の1コア1GBに対して,
JOI2010/2011予選では4コア4GBとした.
- JOI2010/2011予選では,
Web サーバへの処理の割り当てを,
データセンターのローダバランサを用いず,
開発・運用会社が持ち込む機器で行うこととした.
また,
ここでは詳細は記述しないが,
実現方法も変更をしている.
|