为啥google appengine部署需要几分钟才能更新服务

Posted

技术标签:

【中文标题】为啥google appengine部署需要几分钟才能更新服务【英文标题】:why does google appengine deployment take several minutes to update service为什么google appengine部署需要几分钟才能更新服务 【发布时间】:2017-03-05 10:50:40 【问题描述】:

我正在使用 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

每当我部署一个新版本时,几乎一切都进展得非常快。但是,“更新服务 [SimpleExpressServer]”步骤需要几分钟时间。

有没有办法优化这一步?

【问题讨论】:

这太可怕了。我实际上认为这一步在大约 10 分钟后崩溃了。我只是在更新package.json 还是这么慢,我还以为 Google 拥有尖端技术... 【参考方案1】:

来自Deploying your program:

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

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

gcloud app deploy --version myID

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

gcloud app deploy --no-promote

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

当您重新部署某个版本时,与该版本的第一次部署相比,需要完成大量附加工作,其中至少包括:

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

【讨论】:

谢谢。我理解这个过程,所以,这 10 多分钟来完成所有这些是一成不变的,还是有任何配置设置可以帮助我们缩短时间? 我不知道。 这一步没有理由这么长。 now.sh 在 30 多岁的时间内完成! twitter.com/rauchg/status/834222303105867777 @DanCornilescu 当然,但 GAE 在任何时候都没有这么快的案例。 GAE 基线只需 7 分钟即可更新一个怪异的服务,该服务在 1 台最小的机器上运行(手动缩放),无需任何构建(docker 镜像已经构建并推送到他们的注册表) @stanm87 这可能是真的,但毕竟这只是道听途说 - 除非(你实际上在那里工作并且)你确切地知道所有可能的细节部署时在 GAE 基础设施中发生。

以上是关于为啥google appengine部署需要几分钟才能更新服务的主要内容,如果未能解决你的问题,请参考以下文章

在Google Appengine上部署Birt

CSS 文件在部署时未更新(Google AppEngine)

在 Google Appengine 中部署 MobileFirst 混合应用程序

如何在类似于应用引擎的Google Compute引擎上部署应用?

设计使用和不使用 Google App Engine 部署的应用程序

使用 Ktor 部署:如何设置 AppEngine 版本?