インスタンスの管理方法

インスタンスは、アプリケーションを自動的にスケーリングするために App Engine で使われるコンピューティング単位です。ある時点において、アプリケーションは 1 つのインスタンスで実行されていることもあれば、複数のインスタンスで実行されていることもあります(このときリクエストはすべてのインスタンス間で分散されます)。

手動および基本スケーリングのインスタンスは継続的に実行されますが、稼働率の保証はありません。ハードウェアやソフトウェアの障害のため、事前の警告なくインスタンスが途中で終了したり、頻繁に再起動したりする場合があり、このような障害の解決には長い時間がかかることがあります。

すべてのフレキシブル インスタンスは毎週再起動されます。再起動中には、下位互換性のある重要な更新が基盤オペレーティング システムに自動的に展開されます。アプリケーションのイメージは再起動後も同じままです。

ヘルスチェック

App Engine は定期的なヘルスチェック リクエストを送信して、インスタンスが実行されていることを確認します。また、インスタンスが起動済みで、受信リクエストを受け入れる準備ができていることを確認します。デフォルトでは、これらのヘルスチェックは有効になっており、スプリット ヘルスチェックと呼ばれます。ヘルスチェックを受け取ったインスタンスは、指定された時間内にヘルスチェックに応答する必要があります。

スプリット ヘルスチェックのデフォルトの動作をアプリケーションにまで拡張する必要がある場合は、app.yaml ファイルをカスタマイズして次の 2 種類のヘルスチェックを構成します。

  • 実行チェックでは、VM インスタンスとそのコンテナが実行されていることを検出します。VM インスタンスが実行チェックに失敗すると、インスタンスが自動的に再起動されます。実行チェックは、構成されたしきい値と時間間隔、またはコンテナのクラッシュが原因で失敗することがあります。
  • 準備チェックでは、VM インスタンスが受信リクエストを処理する準備ができていることを検出します。VM インスタンスが準備チェックに失敗した場合、VM インスタンスは起動が完了しておらず、リクエストを受信できない状態になっています。VM インスタンスが準備チェックに合格して起動が完了すると、使用可能なインスタンスのプールに追加されます。

スプリット ヘルスチェックの動作の詳細については、スプリット ヘルスチェックへの移行ガイドをご覧ください。

インスタンスがこれらのヘルスチェックを行うと、App Engine ログでインスタンスが次のいずれかの状態になります。

  • 正常。インスタンスがヘルスチェック リクエストを受信し、リクエストを処理している状態です。正常なアプリケーションは、HTTP ステータスコード 200 でヘルスチェックに応答します。
  • 異常。インスタンスがヘルスチェック リクエストを拒否し、特定の回数にわたって連続してヘルスチェック リクエストへの応答に失敗しました。App Engine は、ヘルスチェック リクエストを続行し、異常なインスタンスが事前定義された回数にわたってヘルスチェックへの無応答を続ける場合にはインスタンスを再起動します。
  • レームダック。インスタンスはシャットダウンまたは再起動するようにスケジュールされています。シャットダウン中、インスタンスは処理中のリクエストを完了し、新しいリクエストを拒否します。アプリは 503 コードを返し、インスタンスがリクエストを処理できないことを示します。インスタンスがシャットダウンまたは再起動される前に、限られた期間でシャットダウンが実行され、その期間の構成を短くしたり長くしたりすることはできません。
  • アプリ レームダック。インスタンスがトラフィックの処理を準備しています。アプリは 503 コードを返し、インスタンスがリクエストを処理できないことを示します。VM インスタンスが起動を完了してトラフィックを処理できる状態になると、インスタンスは正常になり、リクエストを処理します。VM インスタンスが時間内に起動しない場合、インスタンスは異常に変わり、削除されます。

レームダックとアプリ レームダックの動作は、VM インスタンスが通過する通常のプロセスの一部です。

リソース使用状況のモニタリング

Cloud Consoleの [インスタンス] ページでは、インスタンスのパフォーマンスを確認できます。各インスタンスのメモリと CPU の使用状況、稼働時間、リクエスト数と他の統計情報を確認できます。また、任意のインスタンスのシャットダウン プロセスを手動で開始できます。

インスタンスのロケーション

各インスタンスは、プロジェクトの設定に従って地理的なリージョンごとに自動的に配置されます。

インスタンスのスケーリング

アプリケーションの実行中、受信リクエストは適切なサービスやバージョンの既存または新規のインスタンスに転送されます。各アクティブ バージョンには少なくとも 1 つのインスタンスが実行され、サービスまたはバージョンのスケーリング タイプによって追加のインスタンスの作成方法が制御されます。スケーリング設定は app.yaml ファイルで構成します。次の 2 つのスケーリング タイプがあります。

自動スケーリング
自動スケーリングは、リクエスト率、レスポンスのレイテンシなどのアプリケーションの指標に基づいてインスタンスを作成します。それぞれの指標のしきい値、および常時稼働する最小数のインスタンスを指定できます。
手動スケーリング
手動スケーリングでは、負荷レベルに関係なく、常に実行されるインスタンスの数を指定します。これにより、複雑な初期化などのタスクや、時間の経過に伴うメモリの状態に依存するアプリケーションが実行できるようになります。