why does google appengine deployment take several minutes to update service
google-app-engine, google-cloud-platform, node.js
Solution
From Deploying your program:
By default the deploy command automatically generates a new version ID each time that you use it and will route any traffic to the new version.
To override this behavior, you can specify the version ID with the version flag:
gcloud app deploy --version myID
You can also specify not to send all traffic to the new version immediately with the --no-promote flag:
gcloud app deploy --no-promote
So your deployment includes overwriting the specified app version and switching traffic to the newly deployed version.
When you re-deploy a certain version there's a pile of additional stuff to be done compared to the 1st deployment of that version, which includes at least:
- switching traffic away from the version being overwritten
- shutting down the instances running the previous version of the code:
- determining the scaling type
- finding out which are the running instances
- any grace period to complete requests in progress
- any grace period to complete shutdown hooks (if applicable)
- sending them the `/_ah/stop` request
- decomissioning the old vm instances
Problem
I'm using nodejs flexible environment documented here Nothing fancy in the config ``` 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 ``` Here is my deployment command ``` gcloud app deploy -q --promote --version $VER ``` Whenever I deploy a new version, almost everything goes really fast. However, the step 'Updating service [SimpleExpressServer]' takes several minutes. Is there anyway to optimize this step?