私たちのアプリは、バックエンド インスタンスに大きく依存しています。数秒ごとに実行する必要があるロジックがいくつかあります。このコードの実行は、フロントエンドに到着する要求によってのみ駆動されるわけではありません。これは、関係なく実行する必要があるためです。
これを解決するためにタスク キューを使用することだけを検討しました。しかし、私たちが知る限り、タスク キューはタスクが 24 時間以内に実行されることを保証するだけです。ただし、これを裏付ける参照は見つかりませんでした。
私たちのアプリは、一定数の常駐 B1バックエンド インスタンスを使用します。バックエンド バージョンがデプロイされて開始された後、各インスタンスは 24 時間年中無休で稼働していると想定しています。
- これは有効な仮定ですか?そうでない場合、バックエンド インスタンスがシャットダウンされるたびにアプリケーションに通知できますか?
- バックエンド インスタンスの可用性に関する SLA とは何ですか?
- バックエンド インスタンスは、終了後に自動的に再起動されますか? たとえば、メモリが不足した後、インスタンスは自動的に再起動されますか?
- インスタンスがすべて終了した場合、どのくらいの速さでインスタンスが再起動されますか?
- 各バックエンド インスタンスに固定サイズのスレッド プールを作成します。バックエンド インスタンスで使用できるスレッド プールの最大サイズはありますか?
- バックエンド インスタンスが停止する可能性がある他の条件はありますか?
ありがとう!
アップデート
docsを読むことで、 いくつかの質問に答えることができます。
App Engine は、バックエンドを無期限に実行し続けようとします。ただし、現時点では、バックエンドのアップタイムは保証されていません。
- では、稼働時間の SLA とは何ですか? 「バックエンドの保証稼働時間は 99.99% です」のようなステートメントを探しています。
App Engine チームは、統計が利用可能になり次第、予想されるバックエンドの稼働時間に関する詳細なガイダンスを提供します。
- この統計はいつ利用可能になりますか?
シャットダウン フックは、バックエンドが終了する前に常に実行できるとは限らないことを認識することも重要です。まれに、App Engine が 30 秒のシャットダウン時間を提供できない停止が発生することがあります。
App Engine がバックエンド インスタンスを停止する必要がある場合、既存のリクエストは完了するまで 30 秒与えられ、新しいリクエストはすぐに 404 を返します。
次のコード サンプルは、基本的なシャットダウン フックを示しています。
LifecycleManager.getInstance().setShutdownHook(new ShutdownHook() {
public void shutdown() {
LifecycleManager.getInstance().interruptAllRequests();
}
});