3

每当我使用 app_cfg.py 部署我的项目时,我们的项目都会在 3-4 秒的时间段内返回 404 not found 错误。我认为这可以通过让多台机器启动并运行来避免。在云控制台中,它只显示一个实例一直在运行,即使我将 min_idle_instances 设置为 3。

如何在部署期间避免 404'ing 服务器?

以下是 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
4

1 回答 1

3

我看到两种可能的解释:

  • 如果您正在部署与已经承载流量的服务/应用程序版本相同的服务/应用程序版本:您实际上是在重写应用程序代码,因此 GAE 将停止所有实例并启动新实例。发生这种情况时,该应用程序将无法运行。还有延长停机时间的风险,请参阅Google App Engine 上的持续集成/部署/交付,风险太大?

  • 即使您正在部署不同的版本,但您立即将 100% 的流量切换到它并且流量很高 - 自动缩放器需要一些时间来分析流量模式并启动足够的动态实例来处理它。请参阅在切换到新的默认版本时使用流量迁移或拆分中的详细信息。

我不认为在这两种情况下部署 using app_cfg.pyorgcloud app deploy都很重要。

一旦确认它运行良好,总是部署一个新版本并逐渐将流量切换到它应该解决所有这些情况。

空闲实例无济于事,因为它们必须使用新代码启动。无论如何,它们仅在高峰值瞬变期间有帮助,请参阅将自动缩放 max_idle_instances 设置为零 (0) 有何作用?

于 2018-03-08T04:35:43.140 回答