【发布时间】:2021-11-03 12:06:26
【问题描述】:
我们将服务从 GCP App Engine 迁移到 Cloud Run。此服务连接到 Cloud SQL。
其参数为:
- 每个容器的最大请求数:1
- 分钟实例:0
- 最大实例数:200
收到峰值后,我们多次遇到此错误:
Cloud SQL connection failed. Please see https://cloud.google.com/sql/docs/mysql/connect-overview for additional details: googleapi: Error 429: Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'sqladmin.googleapis.com' for consumer 'project_number:370240628xxx'., rateLimitExceeded
Cloud SQL Admin API 中的配额Queries per minute per user 设置为 180。所以这显然是失败点。
我发现由于 Cloud Run 连接到 Cloud SQL 实例的方式而达到配额限制。正如this link 所说:
本机连接利用 Cloud SQL Auth 代理,该代理反过来向 Cloud SQL Admin API 发出请求。此 API - 与所有 GCP API 一样 - 具有限制配额,一旦达到,容器将无法启动。
同一网站上的教程建议使用 VPC 连接器而不是普通的 Cloud SQL 连接。但我看到 Google 的 docs 和其他 stackoverflow 帖子建议以某种方式添加 quotaUser 参数。
最佳解决方案是什么?我通常会选择 VPC,但由于这是一项付费服务,我显然会尽量避免这种情况。由于我已经为 Cloud Run 和 Cloud SQL 付费,我希望这两者能够连接起来而不会出现问题和额外费用。
感谢您的所有提示和帮助!
【问题讨论】:
-
您可以向支持人员开一张票并询问他们是硬限制还是软限制?它可以解决您的问题。
-
我知道这是我可以改变的限制。但这根本不可扩展。您可以在
APIs & services中找到并编辑此限制 -->Cloud SQL Admin API -
正如 Arnaud(作者)在我引用的链接中提到的,它可能使用 Cloud SQL Auth 代理。诡异的。他通过使用 VPC 解决了这个问题。
标签: docker google-cloud-platform google-cloud-sql knex.js google-cloud-run