Google App Engine がインスタンスをランダムに再起動することを想定してよいですか?

Google App Engine がインスタンスをランダムに再起動することを想定してよいですか?

昨日、オーストラリア南東部 1 地域で実行されていたアプリのインスタンスが 1 つありました (恥ずかしいことですが)。

昨夜はアプリにとって重要な時間でした。人々はアプリが問題なく動作することを期待していましたが、イベントの途中でインスタンスが消えてしまいました。約 8 分後、新しいインスタンスが作成され、トラフィックの処理を継続しました。

これは予期すべきことでしょうか? インスタンスがランダムに消えて再起動しますか? いくつかのバージョンを実行する必要があることはわかっていますが、両方のバージョンが同時に再起動したらどうなるでしょうか?

ログには、アプリ (標準のシンプルな Rails アプリ) が再起動した時点でのエラーは表示されません。ログには 8 分間のギャップがあり、その後 Puma が新しいインスタンスで起動します。

CPU 使用率は一定で、5% を超えることはほとんどありませんでした。メモリ使用量は約 840 MB で、再起動直前に 880 MB のわずかなピークがありました。「ディスク バイト」は一定で約 15 KB/秒でしたが、再起動時に 40 MB/秒の大きなスパイクがありました。

アプリ.yaml

entrypoint: bundle exec rackup -p $PORT
env: flex
runtime: ruby

handlers:
- url: .*
  script: main.app
  secure: always

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 4
  cpu_utilization:
    target_utilization: 0.75

答え1

ドキュメントによると、予期しない再起動には主に 2 つの理由があります。

  • インスタンスは毎週再起動されます[1]。
  • ヘルスチェックでHTTPコード200以外が返される[2]。

追加情報を提供していただければ、話し合うことができます。

答え2

私も同様の問題を抱えています。新しい健康診断アプリケーションをチェックしないVM と Docker のみ (アプリケーションをチェックするように設定していない限り、私は設定していません) なので、問題は App Engine 自体にあることは明らかです。

編集: なぜ否定的なのかは不明ですが、これをより明確にします。

はい、インスタンスがランダムに再起動されることを想定する必要があります。表示されている動作は、アプリによるものではありません。

関連情報