【问题标题】:Requests from docker container in Google Cloud Run Service to Google Cloud SQL takes up to 2 minutes从 Google Cloud Run 服务中的 docker 容器到 Google Cloud SQL 的请求最多需要 2 分钟
【发布时间】:2021-07-11 06:26:37
【问题描述】:

我正在使用 Google Cloud Run 服务将我的 Spring 应用程序托管在 docker 容器中。数据库在 Google SQL 服务中运行。我的问题是从应用程序到数据库的请求最多可能需要 2 分钟。请参阅Google Cloud Run log(长请求被涂成黄色)。这是DockerfileDocker Compose File

数据库非常空,它包含大约 20 个表,但每个表只包含几行,所以没有请求大于几 kB。更奇怪的是,在重新部署应用程序后,请求又很快了。但是在几分钟、几小时甚至一整天之后,请求又变慢了。当我在本地机器上启动应用程序时,请求总是很快(对我的本地 SQL 和 Google SQL 实例),从来没有任何慢速连接。我的应用程序中不需要任何数据库请求的所有操作仍然很快,只需几毫秒。

两个服务都在同一个区域(欧洲西部)运行,并且运行服务的 CPU 使用率从未高于 15%,Google SQL 的 CPU 使用率从未高于 3%。 Google SQL 使用 1 个 CPU 和 3.75GB,Google 运行服务有 4GB RAM 和 2 个 CPU。但是增加 Google Run Service 和 Google SQL 的功能并不能改善请求延迟。 Google Cloud SQL 使用的是 MySQL 5.7(就像我的本地数据库一样)。

在查看日志后,filtered Google SQL log 中仅显示警告(我真的不知道为什么会发生这种情况)。此外,这是Spring config 中的我的数据库连接设置。但我不认为这有任何影响,当我的本地应用程序连接到我的本地 SQL 实例或 Google SQL 实例时,该配置完美运行。

但也许你们中的一个人有一个想法?

【问题讨论】:

  • 你能在你的数据库与 Spring 的连接上设置一个超时吗?比方说,10s,看看它是否更好。
  • 不只是你 Markus,Cloud Run 和 Cloud SQL 之间的延迟经常会无缘无故地进入疯狂的高数字。 19 日,我们的延迟随机峰值持续了大约 15 分钟。对于解决这个问题,我和你一样好奇。
  • 您是否已经尝试使用不同的数据库连接方法?例如。通过 vpc 连接器或公共 ip,而不是使用本机云运行 sql 连接器。
  • @Stefano 通过公共 IP 它可以正常工作,但我为 Google Cloud Run 服务付费,所以它也应该通过它工作。谷歌不能接受他们随机减慢连接速度(或导致此问题的原因)。似乎只是 Google Run/App Engine 和 Google SQL 之间的问题

标签: database spring-boot docker google-cloud-sql google-cloud-run


【解决方案1】:

虽然不是一个真正的答案,但在 Google 上提交了一个错误来跟踪该问题: https://issuetracker.google.com/issues/186313545

这确实损害了我们的客户体验,并使我们对云运行的服务质量失去了信任。如果 Google 没有反馈来了解他们是否正在解决这个问题,那就更是如此。


编辑:

根据https://issuetracker.google.com/issues/186313545中的互动,现在问题似乎已经解决了

【讨论】:

  • 感谢问题跟踪器的链接。从没想过这会是一个广泛的问题。我希望谷歌愿意解决这个问题!听起来这会影响更多的项目......
  • 看起来问题已解决。如果它不适合你,我建议你直接在Issue tracker 上发布。
猜你喜欢
  • 2021-02-12
  • 1970-01-01
  • 2019-09-16
  • 2022-08-19
  • 2020-11-05
  • 2020-12-26
  • 1970-01-01
  • 2021-12-25
  • 2019-10-02
相关资源
最近更新 更多