Cloud Run 在处理任何请求时突然开始超时

问题描述 投票:0回答:1

我们已经在 Cloud Run 上运行后端应用程序大约一年半了,一个月前它突然停止在看似随机的时间(大约每隔几天)正确处理所有请求,只有在我们重新部署后才能再次工作来自 Cloud Build 的最新图像。应用程序实际上会收到请求,但是它什么都不做,最终请求会在 59 分钟 59 秒(最大超时)后超时 (504),即使是只返回“Hello World”的测试端点也会超时而不发送一个回应。

应用程序是用Python编写的,使用Flask来处理请求。我们有一个用作其数据库的 Cloud SQL 实例,但是我们相信这不是问题的根源,因为即使是不以任何形式涉及数据库的请求也不起作用,并且甚至可以访问 Cloud SQL 实例当应用程序停止工作时。 Cloud Run 使用以下配置部署:

  • 中央处理器:2
  • 内存:8Gi
  • 超时:59m59s
  • VPC 连接器
  • VPC 出口:仅限私有范围
  • 并发:100

绝大多数端点在第一次启动时应该产生某种形式的日志,因此我们确信应用程序在被触发后不会执行任何代码。我们也没有在 Logs Explorer 中看到任何有用的错误消息,只是请求超时导致的 504 错误。它以 59 分钟 59 秒的超时时间进行部署,因此并非超时输入错误,即便如此,这也无法解释为什么它在重新部署时再次运行。

我们有一个 Cloud Scheduler 计划,每 15 分钟触发一次应用程序,它发送到应用程序中的一个端点,检查是否有任何任务要运行并创建 Cloud Tasks 任务(将 HTTP 请求发送到同一应用程序上的一个端点)对于需要在那个时间点执行的任何任务。每次应用程序停止工作时,它似乎确实是在其中一次运行期间,但我们不确定这是原因,因为 Cloud Scheduler 计划无论如何都是最频繁的触发器。似乎也没有一天中的特定时间发生崩溃。

这是日志的(经过大量编辑的)屏幕截图。 Cloud Scheduler 计划在 21:00 到达端点并创建多个任务,但随后在 21:03 达到默认的 3m Cloud Scheduler 超时限制。它创建的任务然后在 21:10 达到默认的 10m Cloud Tasks 超时限制,而它们的端点没有做任何事情。在那之后,所有对服务的请求都会超时而无需执行任何操作。

我能在 SO 上找到的最接近的帖子是 这个,他们的问题也通过重新部署暂时解决了,但是我们的问题在停止工作时并没有发送 200 个响应,而是只是超时而不做任何事情。我们尝试向 Cloud Scheduler 添加重试 + 增加其超时限制,我们还尝试增加 CPU 和 RAM 分配。

感谢任何帮助!

python flask google-cloud-platform google-cloud-run
1个回答
0
投票

我对云运行有同样的问题。但我使用 Django。升级依赖项后我开始发现这个问题。你找到解决办法了吗?

© www.soinside.com 2019 - 2024. All rights reserved.