三つ目はau IDでの障害

三つ目は、4G LTEではなく、au IDの認証決済システムでの障害だ。1月1日午前0時12分~2時29分、同9時33分~午後1時33分の2回にわたって発生し、最初の障害ではau ID認証決済システムが利用できず、二度目の障害ではシステムが利用しづらい状態になり、それぞれ最大80万人、150万人(重複あり)が影響を受けた。

障害の発生状況

au ID認証決済システムは、au ID認証やauかんたん決済、年齢認証、au ID会員機能など、au IDを使ったサービスの利用などに必要なシステム。この障害によって、auスマートパスなどの約120サービスを始め、さまざまなサービスの利用で影響を受けた。

au ID認証決済システムは、インターネットからの通信に対し、ロードバランサがau ID認証などの各アプリサーバー群に振り分け、そこから決済システムのデータベース群にアクセスして処理を行っている。このシステムでは、毎月のauかんたん決済利用限度額をリセットするための処理が月の初めに発生し、データベース(DB)群にアクセスが集中するので、この処理に十分な容量を確保している。これをさらに拡充するために、昨年11月にハードを増強したが、この際、メモリアロケート処理を定義するパラメータの設定に誤りがあった。その結果、月初めの大量アクセスを処理する際に、メモリ割り当て・解放の処理がDB群のCPUに過剰負荷を与え、処理が滞って障害が発生した。

au ID認証決済システム。アプリサーバー群の背後にあるDB群が障害を発生させた

いったん障害は解消したが、原因が特定できないまま、同じ原因で2回目の障害が発生。復旧に時間がかかったのは、この原因が特定できないためだった。障害は、月初めの高負荷、メモリアロケート処理の問題、メモリの断片化という複数の要因が一致した場合にのみ発生しており、それがたまたまこの1月の段階になったのだという。

対策として、メモリアロケート処理のパラメータを変更し、メモリの解放・割り当てを行うのではなく、空きメモリを探してそこに優先的に割り当てを行うようにした。検証環境では、これによって障害の発生が防止できたとのことで、これを商用環境にも導入。1月10日には対策を完了した。また、復旧に時間を要したため、復旧時間の短縮に向けた手順の見直しも1月4日に行っている。

実施された対策

今回の障害は、3つとも原因が異なり、たまたま同時期に重なったことで、連続した問題に発展したが、個別の問題は、待受けタイマーの不整合という機器間連携の不足、作業手順の不備、ソフトウェアの不具合など、「起こるべくして起こった」障害といっていいだろう。

KDDIでは、ひとつ目の障害のきっかけとなったアクセス集中は、スマートフォンのアプリが自律的に通信を行うことによるトラフィック急増とみている。今回の障害にともなうサーバーの増強で、通常の14倍までのアクセスにも耐えられるように設計したそうだが、今回の障害は、単なる設備増強ではカバーできない問題をはらんでいる。

KDDIは、LTEの垂直立ち上げで一気にエリアを拡大し、急速にLTE端末も増やしているが、そうした状況が今回の問題の遠因になった可能性について内田氏は否定する。しかし、NTTドコモが障害を連続で発生させたあとだけに、対策が不十分だったことは否めないだろう。今後同社では、機器間の連携をきちんと検証し、過負荷試験も実施するなど、同様の障害が発生しないような対策を進める方針だ。

(記事提供: AndroWire編集部)