为啥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部署需要几分钟才能更新服务的主要内容,如果未能解决你的问题,请参考以下文章
CSS 文件在部署时未更新(Google AppEngine)
在 Google Appengine 中部署 MobileFirst 混合应用程序
如何在类似于应用引擎的Google Compute引擎上部署应用?