App Engine 标准自动扩展 - 如何在部署时停止以前的版本?

App Engine 标准自动扩展 - 如何在部署时停止以前的版本?

问题:

我正在部署一个 appengine 标准服务 - nodejsv10。但是,在流量迁移到新版本后,旧版本仍在运行,实例数列为 2 或 1。过去一周内,有多个部署在 24 小时以上没有收到流量,这种情况仍然存在(因此我认为这不是控制台延迟刷新问题)。

我不想为这些实例付费,因为我不需要它们。手动删除这些旧版本似乎是一种愚蠢的用户体验。

部署命令:gcloud beta app deploy

应用程序.yaml

env: standard
instance_class: F4
inbound_services:
  - warmup
automatic_scaling:
  min_idle_instances: 1
  max_idle_instances: 1
  min_pending_latency: automatic
  max_pending_latency: automatic
  max_concurrent_requests: 15
  min_instances: 1

答案1

在阅读了更多文档后,我想我找到了解决方法。我删除了min_instances并保留了min_idle_instances。由于min_instances强制实例处于活动状态,而不管流量如何,并且min_idle_instances仅适用于接收大部分流量的版本。我正在测试这个,如果不起作用会报告。

https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#automatic_scaling

最小实例数

App Engine 为该模块版本创建的最小实例数。这些实例在请求到达时处理流量,并且即使根据需要启动了其他实例来处理流量,仍会继续处理流量。请注意,无论这些实例是否接收流量,您都需要为指定的实例数付费。

最小空闲实例数

保持运行并准备处理流量的实例数。请注意,无论实例是否接收流量,您都需要为指定的实例数付费。此设置仅适用于接收大部分流量的版本。

答案2

如上所述,App Engine 标准实例无法停止这里除非您使用手动或基本扩展。这意味着如果出于某种原因,某人能够访问您之前版本的 URL,它将启动一个实例来满足该请求。

我的建议是换一种类型的缩放(我个人会选择基本扩展(对于您的情况)因为您可以停止实例。否则,您将不得不删除以前的版本,或者冒着由于对旧版本的一些随机请求而导致实例在您不知情的情况下在旧版本上运行的风险。

希望您发现这些信息有用。

相关内容