Google App Engine コンソールでサーバー コードを新しいバージョンに切り替えると、多くの新しいインスタンスを生成する必要があります。そのため、約 500 のエラーが発生し、応答時間が長くなります。
これらの問題を軽減するためのベストプラクティスは何ですか?
Google App Engine コンソールでサーバー コードを新しいバージョンに切り替えると、多くの新しいインスタンスを生成する必要があります。そのため、約 500 のエラーが発生し、応答時間が長くなります。
これらの問題を軽減するためのベストプラクティスは何ですか?
500 の応答は、展開中の要求に対して常に発生するわけではありません。以前は、アプリの新しいバージョンが古いバージョンから中断することなくトラフィックを引き継ぐことができましたが、それはかなり前に停止したように見えました。これらの 500 はアプリケーションにまったく送信されないようです (ログにリクエストが表示されず、アプリケーションの 500 ページによって処理されないため)。時間枠も、なしから最大 1 分まで変化するようです。
appengine チームがこれを解決しようとしているという兆候はわかりませんが、これはバグ (または少なくとも合理的な機能要求) のようです。
この問題を回避するために、通常は別のバージョンにデプロイし、それをデフォルト バージョンに切り替えます。トラフィックが処理されるようになったら、以前のバージョンにデプロイしてから、デフォルトに戻します。これにより、顧客は中断することなくサービスを受けることができますが、(少なくとも Java ランドでは) 新しいビルドが必要になります。
他の人が re: ウォームアップ リクエストに回答するだけでなく、トラフィック分割も検討する必要があります。「App Engine のトラフィック分割ツールを使用すると、Google がロールアウトするときに行うのと同様に、アプリの機能を一定期間にわたってゆっくりとロールアウトできます。数日または数週間かけて新機能を提供します。トラフィック分割により、A/B テストも実行できます。トラフィック分割は、受信リクエストをアプリの異なるバージョンに分割することで機能します。」
ドキュメントはこちらhttps://developers.google.com/appengine/docs/adminconsole/trafficsplitting
実際のトラフィックがインスタンスに送られる前にアプリケーションをロードするようにウォームアップ リクエストを設定します。
Python: https://developers.google.com/appengine/docs/python/config/appconfig#Warmup_Requests
Java: https://developers.google.com/appengine/docs/java/config/appconfig#Warmup_Requests
移動: https://developers.google.com/appengine/docs/go/config/appconfig#Inbound_Services
PHP: https://developers.google.com/appengine/docs/php/config/appconfig#Warmup_Requests