是什么原因导致每 10 分钟左右出现一次 Google App Engine 504 网关超时?

是什么原因导致每 10 分钟左右出现一次 Google App Engine 504 网关超时?

我刚刚迁移了我们的生产网站昨晚我将其转移到 Google App Engine,现在应用程序在大约 10-15 分钟不活动后开始出现 504 网关超时。但我已经在 GAE 上运行新网站的测试版本几个月了,在另一个项目中,它从未出现过这个问题。我不明白发生了什么。

下面是 GAE 仪表板图表,显示直到早上 7 点,几乎所有请求都返回 5XX 错误。我不确定发生了什么,所以我决定重新部署应用程序,看看是否能让一切恢复正常……不知为何,它似乎确实恢复了正常。

在此处输入图片描述

重新部署后,网站又开始响应了。我点击了一会儿,修复了一个错误,重新部署……一切都很好。

然后在 7:20,所有请求再次变成 504 网关超时错误。

我在 7:40 看到它,重新部署后没有任何变化,它又恢复正常运行。

到底是怎么回事?

附言:我知道动态 gae 实例将处于空闲状态,需要时间才能重新启动,但事实并非如此。我看到我的开发项目 gae 出现了这种延迟,但大约 10 秒后页面就会出现。在我的生产 gae 上,我的浏览器只会旋转一分钟,然后出现 504 错误,并且这种情况会一直持续,直到我重新部署。

在此处输入图片描述

答案1

根据OP:

他在太短的时间内拨打了太多syslog()电话error_log(),这导致了后端问题,应用程序崩溃,前端网关将尝试与后端实例通信,但该实例已死亡,因此网关最终将超时。

修复方法在于间隔开对日志信息的调用。

答案2

这可能是因为你的应用程序缩小到 0 个实例,这导致新的请求经历冷启动,为了避免这个问题,你可以配置预热请求为了提高响应能力

例如:

automatic_scaling:
  target_cpu_utilization: 0.68
  min_instances: 1
  max_instances: 10
  min_idle_instances:1

通过此配置,您可以保证至少有 1 个实例准备好接收传入请求,并避免缩小到 0。

通常,当部署准备就绪时,会启动 1 或 2 个实例,但如果没有流量,应用程序可以缩减到 0。

相关内容