Googleはが普段クラウドデータセンター間でアプリケーションのマイグレーションを行う際には、そのプロセスを説明するときに「正常」(graceful)という言葉を使う。しかし最近起こった障害は、「正常」からはほど遠いものだった。
Googleの調査によれば、米国時間8月11日に「Google App Engine」に発生した2時間近くにわたる不具合を引き起こした障害の原因は、ルータのアップデートとデータセンターの自動管理の問題が重なったことだったという。
このインシデントによって、Google App EngineのUS-CENTRALリージョンでホストされていたアプリケーションの5分の1強で、エラーが通常よりも大きく上昇した。Googleはこの問題で謝罪し、再発防止処置を実施した。
Googleは8月23日に発表した同インシデントの事後分析で、「2016年8月11日木曜日の太平洋夏時間13:13から15:00にかけて、US-CENTRALリージョンでホストされていたアプリケーションの18%でエラー率が10%から50%に上昇し、アプリケーションのうち3%では、エラー率が50%を超えた」と説明している。
また、影響の深刻度は低いものの、さらに多くのアプリケーションでエラー率の上昇が発生しており、エンドユーザーの読み込みやや時間が長くなった可能性がある。Googleによれば、「アプリケーションの37%では、エラー率の上昇が原因で、リクエスト1回あたりの遅延の中央値に0.8秒弱の上昇が見られた」という。同リージョンの残る63%のアプリケーションには影響がなかった。
事後分析によれば、この障害の責任はGoogleにあり、原因はリージョン内(この場合はUS-CENTRAL)データセンター間での定期的なトラフィックの負荷分散処理の際に発生したという。この処理では通常、あるデータセンター施設内のサーバから発生しているトラフィックを別のデータセンターへリダイレクトし、その際アプリケーションは新たにプロビジョニングされたサーバ上で自動的に再起動される。
ところが今回は、ルータ上でソフトウェアアップデートの適用が行われている間にこのハンドオフが発生した。Googleはこの2つの処理が同時に行われることで、ルータが過負荷になることを予期していなかった。
「このアップデートが、ルータの連鎖的な再起動の引き金となった。これによって、一時的に利用可能なルータの能力が減少した」とGoogleは述べている。
このサーバ不足によって、手動でスケールが設定されたアプリケーションの複数のインスタンスが再スケジュールされた。App Engineは手動でスケールが設定されたアプリケーションの新規インスタンスの作成を、ルータ経由で新規インスタンスをホストするサーバに起動リクエストを送信することで行っている。
一部の手動でスケールが設定されたインスタンスの起動が遅れたことが原因で、App Engineのシステムが起動リクエストを再送信し、ルータのCPU負荷を急上昇させた。過負荷になったルータは、一部の新規リクエストを処理できずに破棄した。
システムには負荷を処理するのに十分な能力を持っていたものの、ルータはリクエスト再送信の増大からの復旧に時間がかかった。