处理云SQL中的并发请求和连接

21

我们已经在App Engine上使用Datastore创建了一个应用程序。现在我们需要使用Cloud SQL,因为我们想要使用联接、嵌套查询和函数(如averagetotal等)。每天的Cron作业将数据从Datastore迁移到Cloud SQL。

我正在查阅以下链接以了解有关性能和限制的基本信息:

到目前为止,看起来D0或D1层将满足我们的要求。

以下几点令我感到困惑:

a)什么是挂起连接,它会对什么产生影响? 不确定是否会发出1033 Instance has too many concurrent requests警告,当超过100个请求时。我们该怎么处理?我们可以创建250个连接,但同时只使用100个吗?

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

c)每个App Engine实例最多12个并发连接每个SQL实例。我们如何确保每个App Engine实例最多不超过12个连接?

我已经浏览了以下论坛:

What are the connection limits for Google Cloud SQL from App Engine, and how to best reuse DB connections?

如何在Google Cloud SQL(GAE)Python应用程序中管理数据库连接是一个好的方法?

但是人们在这方面还会遇到一些问题。

d) 我们进行了一次测试,使用了1000多个请求时出现了"Lost connection to MySQL server at 'reading initial communication packet', system error: 38(2013,“失去与MySQL服务器的连接,在'读取初始通信包'时产生系统错误:38”)"的操作错误。

我们有1500多人同时使用我们的系统,看起来它将失败。因此,我们不确定是否可以使用Cloud SQL解决上述问题。但是应该有解决方法。

有没有人能够提供帮助呢?


在 Google Cloud SQL Discuss 组线程上已经有类似的问题被问过了。你所寻找的答案可能可以在该线程中 David 的回答中找到,与 Cloud SQL 并发连接和请求相关的查询 - Nicholas
1个回答

0
在我的公司中,我们在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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接