インスタンスは、アプリケーションを自動的にスケーリングするために App Engine で使われるコンピューティング単位です。ある時点において、アプリケーションは 1 つのインスタンスで実行されていることもあれば、複数のインスタンスで実行されていることもあります(このときリクエストはすべてのインスタンス間で分散されます)。
手動および基本スケーリングのインスタンスは継続的に実行されますが、稼働率の保証はありません。ハードウェアやソフトウェアの障害のため、事前の警告なくインスタンスが途中で終了したり、頻繁に再起動したりする場合があり、このような障害の解決には長い時間がかかることがあります。
すべてのフレキシブル インスタンスは毎週再起動されます。再起動中には、下位互換性のある重要な更新が基盤オペレーティング システムに自動的に展開されます。アプリケーションのイメージは再起動後も同じままです。
ヘルスチェック
App Engine はヘルスチェック リクエストを定期的に送信することで、インスタンスが正常にデプロイされていること、および実行中のインスタンスが正常な状態であることを確認します。個々のヘルスチェックに対して、指定された時間内にレスポンスが返される必要があります。指定された回数にわたって、ヘルスチェック リクエストへの無応答が続く場合、そのインスタンスは異常です。異常なインスタンスはクライアント リクエストを受け取りませんが、ヘルスチェックは引き続き送られます。異常なインスタンスが、事前定義された回数にわたってヘルスチェックへの無応答を続ける場合、そのインスタンスは再起動されます。
使用されるヘルスチェックには、実行と準備の 2 種類があります。実行チェックでは、インスタンスとコンテナが実行中かどうかを確認し、実行中でなければ再起動します。準備チェックでは、インスタンスが受信リクエストを処理する準備ができているかどうかを確認し、準備ができていないときはどのインスタンスにもリクエストを転送しません。どちらもアプリの app.yaml
ファイルでカスタマイズできます。
正常なアプリケーションは、HTTP ステータスコード 200
でヘルスチェックに応答します。
リソース使用状況のモニタリング
Cloud Consoleの [インスタンス] ページでは、インスタンスのパフォーマンスを確認できます。各インスタンスのメモリと CPU の使用状況、稼働時間、リクエスト数と他の統計情報を確認できます。また、任意のインスタンスのシャットダウン プロセスを手動で開始できます。
インスタンスのロケーション
各インスタンスは、プロジェクトの設定に従って地理的なリージョンごとに自動的に配置されます。
インスタンスのスケーリング
アプリケーションの実行中、受信リクエストは適切なサービスやバージョンの既存または新規のインスタンスに転送されます。各アクティブ バージョンには少なくとも 1 つのインスタンスが実行され、サービスまたはバージョンのスケーリング タイプによって追加のインスタンスの作成方法が制御されます。スケーリング設定は app.yaml
ファイルで構成します。次の 2 つのスケーリング タイプがあります。
- 自動スケーリング
- 自動スケーリングは、リクエスト率、レスポンスのレイテンシなどのアプリケーションの指標に基づいてインスタンスを作成します。それぞれの指標のしきい値、および常時稼働する最小数のインスタンスを指定できます。
- 手動スケーリング
- 手動スケーリングでは、負荷レベルに関係なく、常に実行されるインスタンスの数を指定します。これにより、複雑な初期化などのタスクや、時間の経過に伴うメモリの状態に依存するアプリケーションが実行できるようになります。