提问人:Kartik Domadiya 提问时间:1/28/2016 最后编辑:Jim MorrisonKartik Domadiya 更新时间:10/23/2022 访问量:1290
在 Cloud SQL 中处理并发请求和连接
Dealing with Concurrent Requests & Connections in Cloud SQL
问:
我们使用 Datastore 在 App Engine 上创建了一个应用。现在,我们被引导使用 Cloud SQL,因为我们想使用联接、嵌套查询和函数,例如 等。数据通过每日 Cron 作业从 Datastore 迁移到 Cloud SQL。average
total
我只是通过以下链接来了解与性能和限制相关的基本细节。
- https://cloud.google.com/sql/docs/diagnose-issues#data-issues
- https://cloud.google.com/sql/pricing#v1-pricing
- https://cloud.google.com/sql/faq#sizeqps
到目前为止,看起来 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感到困惑。但是,解决方案应该是可用的。
谁能帮忙?
答:
在我的公司,我们在 Google Cloud SQL 上运行一个 postgres 数据库。我们遇到了类似的问题,我们的解决方案包括使用代理服务,为所有用户保留一个通用的连接器池。
对于 Postgres,这称为 PgBouncer (https://www.pgbouncer.org/)。经过短暂的谷歌搜索后,我发现了 ProxySQL (https://proxysql.com/),它被提及为 MySQL 的潜在类似工具(参见:https://github.com/prisma/prisma/issues/3258)。
在他们的网站上,ProxySQL 还提供了一个模式,可以帮助您了解此服务在实践中的样子。
评论