2

我们正在构建一个使用繁重的后端任务(任务队列)的应用程序,并且在每个任务中 - 我们都在 Google Cloud SQL 中进行 I/O。

由于 GAE 对 12 个并发连接有限制(不确定这是否是问题?我在https://stackoverflow.com/a/26155819/687692看到了)

""在标准环境中运行或使用与标准兼容的 API 的每个 App Engine 实例与 Google Cloud SQL 实例的并发连接不能超过 12 个。" - https://cloud.google.com/sql/faq "

由于这个问题,我的大部分后端任务(每秒 100-500 个任务)都失败了。

失败的任务

此外,我检查了过去 4 天的活动连接:我没有看到任何连接超过 12 个连接。

过去 4 天 - GCS

那么,我需要采取什么方法来解决这个问题?连接池(如何在 GAE 中使用 GCS?)?或其他一些修复?

任何帮助 - 非常感谢指导。如果有人需要更多信息,请告诉我。

谢谢,

4

1 回答 1

1

如果连接处理得当,您不太可能超过标准 Python App Engine 缩放设置的 12 个连接限制。

为了演示,我创建了一个小型应用程序,它安排了许多任务,每个任务获取一个数据库连接并做一些工作。我能够运行此测试而不会遇到连接问题。

值得确保的一件事是您没有泄漏任何连接(即在某些地方或发生异常时没有关闭连接)。

closing对于 MySQLdb,您可以使用from保证您没有泄漏连接contextlib

from contextlib import closing

def getDbConnection():
    return MySQLdb.connect(unix_socket='/cloudsql/instance_name', db='db', user='user', charset='utf8') 

with closing(getDbConnection()) as db:
    # do stuff, database is guaranteed to be closed
于 2016-03-07T08:10:07.020 回答