7

大约每周一次,我们的灵活应用引擎节点应用会脱机,日志中会出现以下行:Restarting batch of VMs for version 20181008t134234 as part of rolling restart.我们将应用设置为自动缩放,设置如下:

runtime: nodejs
env: flex
beta_settings:
 cloud_sql_instances: tuzag-v2:us-east4:tuzag-db
automatic_scaling:
 min_num_instances: 1
 max_num_instances: 3
liveness_check:
 path: "/"
 check_interval_sec: 30
 timeout_sec: 4
 failure_threshold: 2
 success_threshold: 2
readiness_check:
 path: "/"
 check_interval_sec: 15
 timeout_sec: 4
 failure_threshold: 2
 success_threshold: 2
 app_start_timeout_sec: 300
resources:
 cpu: 1
 memory_gb: 1
 disk_size_gb: 10

我了解 GCP/GAE 的滚动重启,但我很困惑为什么 Google 在让我们的主要虚拟机离线之前不启动另一台虚拟机。我们是否必须至少运行 2 个实例才能防止这种情况发生?有没有办法让我配置我app.yaml以确保在重启唯一运行的实例之前启动另一个实例?重启完成后,一切都恢复正常,但仍有 10 分钟的停机时间,这是不可接受的,尤其是考虑到我们无法控制它何时重启。

4

2 回答 2

4

我们知道弹性实例每周重启是一种预期行为。如果健康检查 配置正确并且不是问题,建议确实是设置至少两个实例。

据我所知,App Engine Flex 中没有其他功能可以引发新实例以避免因每周重启而导致停机。您可以尝试直接在 Google Compute Engine 上而不是 App Engine 上运行并自己管理更新和维护,也许这更适合您的目的。

于 2019-04-29T12:29:27.807 回答
0

您是否只是根据应用引擎仪表板中的 num 实例图来猜测这一点?或者您的应用引擎项目在此期间实际上没有响应?

您可以使用 cron 每 5 分钟点击一次,看看它是否有响应。

如果您更改cool_down_period_sectarget_utilization恢复其默认值,此问题是否仍然存在?

如果您的服务在此期间确实处于关闭状态,也许您应该实施一个请求处理程序以进行活力检查: https ://cloud.google.com/appengine/docs/flexible/python/reference/app-yaml#updated_health_checks

他们的默认轮询配置会告诉 GAE 在几分钟内启动

另一件值得仔细检查的事情是您的实例启动需要多长时间。

于 2018-10-31T01:24:29.437 回答