为什么谷歌appengine部署需要几分钟来更新服务

时间:2016-10-23 16:39:11

标签: node.js google-app-engine google-cloud-platform

我使用nodejs灵活环境记录here

配置

没什么特别的
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

每当我部署新版本时,几乎所有内容都非常快。但是,步骤&n;更新服务[SimpleExpressServer]'需要几分钟。

无论如何都要优化这一步骤吗?

enter image description here

1 个答案:

答案 0 :(得分:7)

来自Deploying your program

  

默认情况下,deploy命令会自动生成新的版本ID   每次使用它并将任何流量路由到新的   版本

     

要覆盖此行为,您可以使用指定版本ID   版本标志:

gcloud app deploy --version myID
     

您还可以指定不将所有流量发送到新版本   立即使用--no-promote标志:

gcloud app deploy --no-promote

因此,您的部署包括覆盖指定的应用版本并将流量切换到新部署的版本。

当您重新部署某个版本时,与该版本的第一次部署相比,有一堆附加要完成,至少包括:

  • 远离被覆盖的版本切换流量
  • 关闭运行以前版本代码的实例:
    • 确定缩放类型
    • 找出哪些是正在运行的实例
    • 完成正在进行的请求的任何宽限期
    • 完成关闭挂钩的任何宽限期(如果适用)
    • 向他们发送/_ah/stop请求
  • 解除旧的vm实例