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

Sah*_*has 13 google-app-engine node.js google-cloud-platform

我正在使用这里记录的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
Run Code Online (Sandbox Code Playgroud)

这是我的部署命令

gcloud app deploy -q --promote --version $VER
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

Dan*_*scu 9

从部署程序:

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

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

gcloud app deploy --version myID
Run Code Online (Sandbox Code Playgroud)

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

gcloud app deploy --no-promote
Run Code Online (Sandbox Code Playgroud)

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

当您重新部署某个版本时,与该版本的第一次部署相比,还有一堆额外的东西需要完成,其中至少包括:

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

  • @DanCornilescu当然,但GAE在任何时候都没有任何快速的情况.GAE基线是7分钟来更新一个freakin服务,它运行在1个最小的机器上(手动缩放),没有任何构建(docker镜像已经构建并推送到他们的注册表) (6认同)
  • @stanm87 这可能是真的,但毕竟只是传闻 - 除非(你实际上在那里工作并且)你“确切地知道”部署时 GAE 基础设施中可能发生的所有事情的细节。 (2认同)