在 Cloud SQL 中处理并发请求和连接

Dealing with Concurrent Requests & Connections in Cloud SQL

提问人:Kartik Domadiya 提问时间:1/28/2016 最后编辑:Jim MorrisonKartik Domadiya 更新时间:10/23/2022 访问量:1290

问:

我们使用 Datastore 在 App Engine 上创建了一个应用。现在,我们被引导使用 Cloud SQL,因为我们想使用联接、嵌套查询和函数,例如 等。数据通过每日 Cron 作业从 Datastore 迁移到 Cloud SQL。averagetotal

我只是通过以下链接来了解与性能和限制相关的基本细节。

到目前为止,看起来 D0 或 D1 级将达到我们预期的目的。

让我感到困惑的几件事:

a) 什么是待处理连接,它如何影响? 不确定这是否抛出 1033 实例在超过 100 时具有太多并发请求。我们如何处理这个问题?是不是我们可以创建 250 个连接,但一次只能使用 100 个?

b) 250 个并发连接。 如果超过 250,应抛出错误 Too Many Connections

c) 每个应用引擎实例:每个 SQL 实例 12 个并发连接。我们如何确保每个应用引擎实例不超过 12 个连接?

我浏览了以下论坛:

来自 App Engine 的 Google Cloud SQL 的连接限制是什么,以及如何以最佳方式重用数据库连接?

在 Google Cloud SQL (GAE) Python 应用中管理数据库连接的好方法是什么?

但人们在这方面面临某些问题。

d) 我们收到一个 OperationalError:

(2013年,“在'读取初始通信数据包'时丢失与MySQL服务器的连接,系统错误:38”)错误,当我们尝试使用1000 +请求进行测试时。

我们有 1500+ 人同时使用我们的系统,看起来它会失败。因此,由于上述问题,我们是否可以使用Cloud SQL感到困惑。但是,解决方案应该是可用的。

谁能帮忙?

python mysql google-app-engine google-cloud-sql

评论

0赞 Nicholas 2/2/2016
在 Google Cloud SQL 讨论组线程中也提出了类似的问题。您可以在 David 在线程 Queries related to Cloud SQL 并发连接和请求中找到您寻求的答案。

答:

0赞 damianr13 10/23/2022 #1

在我的公司,我们在 Google Cloud SQL 上运行一个 postgres 数据库。我们遇到了类似的问题,我们的解决方案包括使用代理服务,为所有用户保留一个通用的连接器池。

对于 Postgres,这称为 PgBouncer (https://www.pgbouncer.org/)。经过短暂的谷歌搜索后,我发现了 ProxySQL (https://proxysql.com/),它被提及为 MySQL 的潜在类似工具(参见:https://github.com/prisma/prisma/issues/3258)。

在他们的网站上,ProxySQL 还提供了一个模式,可以帮助您了解此服务在实践中的样子。

enter image description here