【问题标题】:Why is Google Appengine so slow connecting to CloudSQL为什么 Google App Engine 连接到 Cloud SQL 这么慢
【发布时间】:2014-04-24 16:00:49
【问题描述】:

在连接到 CloudSQL 后端时,我发现开发和生产之间的延迟存在巨大差异,远远超出我的预期。

我在哪里进行了测试:

  1. 我提取了 125、250、500、1000 和 2000 行(行大小约为 30 字节)
  2. 我提取了每个行大小 20 次,以获得良好的时间采样

测试在三种环境中运行:

  1. 托管应用引擎
  2. 本地开发模式,但通过静态 IP 连接到 CloudSQL
  3. 本地开发模式并连接到运行 MySQL 的本地 VM

在这里您可以看到结果:

现在我预计会出现 50ms-200ms 左右的速度波动,但 3-4 似乎有点高。

我是 appengine 的新手,所以任何可能导致此问题的新错误?或者其他建议?我在 appengine 中对我的代码运行了一个分析器,并且调用了 _apiProxy.Event“等待”,它消耗了至少 500 毫秒,但没有超过 750 毫秒,除此之外,还有任何长时间运行的调用。当然,一些较短的运行调用最终会加起来,但这不像我有一个需要调整的循环或任何东西。

提前致谢!

【问题讨论】:

  • 你是如何在 prod 中连接到 Cloud SQL 的?你用的是原生驱动吗?旧的、已弃用的连接方式很慢(尤其是在 Python 中)。 :-( 已建立连接上“SELECT 1”的往返时间应低于 2 毫秒。
  • 我正在使用 sqlalchemy 进行连接,它在后台使用 mysqldb,如此处所述 docs.sqlalchemy.org/en/rel_0_9/dialects/… 。我将编写一个只执行“SELECT 1”的测试,看看需要多长时间。

标签: google-app-engine google-cloud-sql


【解决方案1】:

首先,检查您使用的连接路径:您是connecting via the latest documented method 吗? Cloud SQL 曾经有一个较慢的连接路径,现已弃用,但仍在运行,因此您可以通过该路径进行访问。

其次,App Engine 应用和 Cloud SQL 实例是否位于同一位置?检查您的 Cloud SQL 设置中的“首选位置”是否设置为遵循您要连接的应用引擎应用。

作为最后一种可能性,考虑到您在本地连接数据,这似乎不太可能,请确保您正在重用数据库连接,创建新连接可能会很昂贵。如果您的应用出于某种原因在本地重用连接但在 App Engine 端创建新连接,则可能会产生这种行为。但就像我说的,这似乎不太可能。

【讨论】:

  • 我正在使用 SqlAlchemy 进行连接,它在后台使用 mysqldb,如此处docs.sqlalchemy.org/en/rel_0_9/dialects/… 所述。这是一个好主意,尽管连接出了问题。在 local/cloudsql 测试中,我直接连接到静态 IP,但在生产中我使用的是 instancename 方法。我会尝试指向IP,看看是否有区别。另外,我正在使用首选位置选项。你有弃用方法的例子吗?那我可以验证一下吗?
  • 查看源代码,sqlalchemy 在后台使用这个 (code.google.com/p/googleappengine/source/browse/trunk/python/…),看起来像这里的示例 (developers.google.com/appengine/docs/python/cloud-sql)
  • 在 App Engine 产品中,您将使用 /cloudsql/ unix 套接字获得更好的性能。如果您真的想要 App Engine 产品中的 IP 连接,您可以使用连接器/Python(目前,MySQLdb 不起作用)。
  • @RazvanMusaloiu-E。我真的不想要IP连接。我将编写一个不使用 SqlAlchemy 的快速测试,看看是否会有所不同,因为我无法确定 SqlAlchemy 使用的是什么。
  • 好吧,我做了一个绕过 sqlalchemy 的测试,并按照文档中的说明进行了连接。我的查询在 250 毫秒内返回,没有 json 编码。这比以前快了大约 3.5 秒。因此,sqlalchemy 的连接方式显然有问题。谢谢大家的帮助!
猜你喜欢
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
  • 2014-07-19
  • 2015-12-18
  • 1970-01-01
  • 2017-12-05
相关资源
最近更新 更多