【问题标题】:Do App Engine Flexible Environment VM instance restarts take advantage of automatic scaling?App Engine 柔性环境 VM 实例重启是否利用了自动扩展功能?
【发布时间】:2017-10-15 18:16:03
【问题描述】:

我正在开发我的第一个 App Engine 柔性环境应用程序。

docs 解释说虚拟机每周重启一次:

VM 实例每周重启一次。在重新启动期间 Google 的管理服务将应用任何必要的操作系统 和安全更新。

重启是否会导致启用自动缩放的应用停机?如果是这样,我可以采取什么措施来避免停机?

例如,我可以经常将流量迁移到新实例,这样任何实例的运行时间都不会超过一周。

【问题讨论】:

  • 您有没有找到更好的解决方案/解决方法来处理这种情况?
  • 我没有,但我没有进一步调查。相关项目的范围缩小到不需要 GAE 应用程序的程度。

标签: google-app-engine


【解决方案1】:

好吧,后来我咨询了 Google 支持团队,这里是他们的建议以避免停机。

我的问题是:

  1. 每周更新不及时。也许有一个时间范围,我应该期望重启实例? (即:每周五晚上)。

  2. 每周更新涉及所有实例,独立于它们的创建时间? (即:每周更新前 1 小时或 1 天创建的实例将重新启动?)。

  3. 我们应该如何处理这样的问题?它同时为所有请求返回 502。

1.- 目前无法知道每周重启的时间。 GCP 确定何时需要并重新启动某些实例(每周一次)。

2.- 不,只要您运行的实例超过 1 个,您就不会看到所有实例同时重新启动。

3.- 我们建议避免因每周重新启动而导致停机的方法是至少拥有 1 个以上的实例。尝试至少设置 2 个实例。

我希望,这些信息对其他人有用。

【讨论】:

    【解决方案2】:

    您的问题的答案在docs

    App Engine 会尝试让手动扩展实例无限期地运行,但无法保证正常运行时间。导致提前终止或频繁重启的硬件或软件故障可能会在没有警告的情况下发生,并且可能需要相当长的时间才能解决。您的应用程序应该能够处理此类故障。

    以下是一些避免实例重启导致停机的好策略:

    • 跨多个实例使用负载平衡。
    • 配置比处理正常流量所需更多的实例。
    • 当手动扩展实例不可用时,编写使用缓存结果的回退逻辑。
    • 减少实例启动和关闭所需的时间。
    • 在多个实例中复制状态信息。
    • 对于长时间运行的计算,请不时检查状态,以便在未完成时恢复它。

    【讨论】:

    • 好建议,但我会使用自动缩放。测试表明,一个实例可以使用备用资源处理正常流量。我希望 GAE 能够通过自动扩展在将正在运行的实例减少到零之前添加一个实例。可以?如果没有,我将使用min_num_instances: 2 运行。我可以通过经常设置min_num_instances: 1(例如 7 天中的 6 天)来显着降低成本。也就是说,如果 GAE 提供每周重启的时间表(或提前通知)。可以? GAE 一次重启的应用实例的最大数量是多少?
    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    相关资源
    最近更新 更多