web-dev-qa-db-ja.com

GoogleAppEngineのデプロイがサービスの更新に数分かかるのはなぜですか

文書化されているnodejsフレキシブル環境を使用しています ここ

設定に特別なものはありません

runtime: nodejs
vm: true
service: SimpleExpressService
health_check:
  enable_health_check: False
automatic_scaling:
  min_num_instances: 1
  max_num_instances: 4
  cool_down_period_sec: 120
  cpu_utilization:
    target_utilization: 0.5

これが私のデプロイメントコマンドです

gcloud app deploy -q --promote --version $VER

新しいバージョンをデプロイするときはいつでも、ほとんどすべてが本当に速く進みます。ただし、「サービスの更新[SimpleExpressServer]」の手順には数分かかります。

このステップを最適化する方法はありますか?

enter image description here

14
Sahas

From プログラムのデプロイ

デフォルトでは、deployコマンドは、使用するたびに新しいバージョンIDを自動的に生成し、トラフィックを新しいバージョンにルーティングします。

この動作をオーバーライドするには、バージョンフラグを使用してバージョンIDを指定できます。

gcloud app deploy --version myID

--no-promoteフラグを使用して、すべてのトラフィックを新しいバージョンにすぐに送信しないように指定することもできます。

gcloud app deploy --no-promote

したがって、デプロイには、指定されたアプリバージョンの上書きと、新しくデプロイされたバージョンへのトラフィックの切り替えが含まれます。

特定のバージョンを再デプロイすると、そのバージョンの最初のデプロイメントと比較して、追加の作業が山積みになります。これには少なくとも次のものが含まれます。

  • 上書きされるバージョンからトラフィックを切り替える
  • 以前のバージョンのコードを実行しているインスタンスをシャットダウンします:
    • スケーリングタイプの決定
    • 実行中のインスタンスを見つける
    • 進行中のリクエストを完了するための猶予期間
    • シャットダウンフックを完了するための猶予期間(該当する場合)
    • それらに/_ah/stopリクエストを送信します
  • 古いVMインスタンスの廃止
8
Dan Cornilescu