首页 > 解决方案 > 在一个 GCP 项目中来自 Cloud Run 应用的 HTTP 503 错误,但在另一个项目中没有

问题描述

问题

我在 2 个项目上使用相同的容器(类似的资源)——生产和登台。两者都使用云闪现 DNS 设置自定义域,并且位于同一区域。容器构建在完全不同的项目中完成,IAM 用于处理对这些容器的访问。两个项目服务的所有 5 项服务都有 80 次并发和 300 秒超时。

3 天前一切正常,但从昨天开始,几乎所有暂存的云运行服务(谢天谢地)开始随机抛出 503,并且对于大多数请求。有些服务甚至一周都没有部署。相同的容器在生产项目上运行良好,没有问题。

排除原因

可能的原因

响应代码

我刚刚对 vegeta(30 秒,10 rps)相同的容器进行了快速检查,用于静态文件路径的暂存和生产,以下是响应:

分期

分期响应

生产

生产反应良好

如果有人对此有任何见解,那将有很大帮助。

标签: dockergoogle-cloud-platformgoogle-cloud-run

解决方案


根据您的解释,我无法理解发生了什么。您解释了什么不起作用,但没有指出什么起作用(您的应用程序在本地运行吗?您能够运行 hello world 示例应用程序吗?)

所以我会推荐一些调试技巧。

  • 如果您收到 HTTP 5xx 状态代码,请首先检查您的应用程序的日志。它是否打印任何日志?是否有请求日志?您的应用程序是否具有并部署了“详细”日志记录设置?

  • 尝试*.run.app直接访问您的域。如果它不起作用,那么它不是域或 dns 或 cloudflare 问题。尝试调试和/或重新部署您的应用程序。首先部署一些有效的东西。如果*.run.app域有效,则问题不在 Cloud Run 中。

  • 确保您没有在代理模式下使用 Cloudflare(例如,您的 DNS 指向 Cloud Run;而不是 Cloudflare),因为当域位于 Cloudflare 之后时,存在一个关于证书颁发/续订的已知问题。

除此之外,如果重新部署似乎可以解决您的问题,则可以尝试重新部署。很可能某些配置最近变成了两个不同的项目。


推荐阅读