appcfg.py 部署期间出现 App Engine 404

App Engine 404 during deployment with appcfg.py

每当我使用 app_cfg.py 部署我的项目时,我们的项目 returns 都会有 3-4 秒的时间出现 404 未找到错误。我认为这可以通过启动多台机器和 运行 来避免。在云控制台中,它一直只显示一个实例 运行,即使我将 min_idle_instances 设置为三个。

如何避免在部署期间对服务器进行 404 检测?

以下是 app.yaml 文件的一部分

instance_class: F4
automatic_scaling:
  min_idle_instances: 3
  max_idle_instances: 6
  min_pending_latency: 30ms  # default value
  max_pending_latency: automatic
  max_concurrent_requests: 40

我看到了 2 种可能的解释:

  • 如果您正在部署与已经承载流量的版本相同的 service/app 版本:您实际上是 re-writing 应用程序代码,因此 GAE 将停止所有实例并开始新的。发生这种情况时,该应用程序将无法运行。还存在停机时间延长的风险,请参阅

  • 即使您正在部署不同的版本,但您立即将 100% 的流量切换到它并且流量很高 - 自动缩放器需要一些时间来分析流量模式并启动足够的动态实例来处理它。请参阅 Use traffic migration or splitting when switching to a new default version.

  • 中的详细信息

我认为使用 app_cfg.pygcloud app deploy 进行部署在这两种情况下都不重要。

始终部署新版本并在确认它运行 后逐渐将流量切换到它应该可以解决所有这些情况。

空闲实例无济于事,因为它们必须使用新代码启动。无论如何,它们只会在高峰瞬变期间提供帮助,请参阅 What does setting the automatic_scaling max_idle_instances to zero (0) do?