Google app engine 为什么Google Appengine连接到CloudSQL的速度如此之慢

Google app engine 为什么Google Appengine连接到CloudSQL的速度如此之慢,google-app-engine,google-cloud-sql,Google App Engine,Google Cloud Sql,当连接到CloudSQL后端时,我发现开发和生产之间的延迟有着巨大的差异,比我预期的要大得多 我运行了一个测试,其中: 我获取了1252505001000和2000行(行大小约为30字节) 我获取了每行大小的20倍,以获得时间的良好采样 该测试在三种环境中运行: 阿彭金酒店 本地开发模式,但通过静态IP连接到CloudSQL 本地开发模式并连接到运行MySQL的本地VM 在这里您可以看到结果: 现在我预计速度会在50-200毫秒之间波动,但3-4秒似乎有点高 我是appengine的新手,有没

当连接到CloudSQL后端时,我发现开发和生产之间的延迟有着巨大的差异,比我预期的要大得多

我运行了一个测试,其中:

  • 我获取了1252505001000和2000行(行大小约为30字节)
  • 我获取了每行大小的20倍,以获得时间的良好采样
  • 该测试在三种环境中运行:

  • 阿彭金酒店
  • 本地开发模式,但通过静态IP连接到CloudSQL
  • 本地开发模式并连接到运行MySQL的本地VM
  • 在这里您可以看到结果:

    现在我预计速度会在50-200毫秒之间波动,但3-4秒似乎有点高

    我是appengine的新手,有没有可能是新手犯的错误造成的?还是其他建议?我在appengine中对我的代码运行了一个探查器,有一个对_apiProxy.Event“wait”的调用,它至少占用了500毫秒,但没有超过750毫秒,除此之外,还有任何长时间运行的调用。当然,有许多短时间运行的调用最终会加起来,但我并没有需要调整的循环或其他任何东西


    提前谢谢

    首先,检查您正在使用的连接路径:是吗?云SQL过去的连接路径较慢,现在已被弃用,但仍在运行,因此您可以通过该路径进行访问

    第二,App Engine应用程序和云SQL实例是否在同一位置?检查您的云SQL设置中的“首选位置”是否设置为遵循您正在连接的应用程序引擎应用程序


    最后一种可能性是,考虑到您有本地连接的数据,这似乎不太可能,请确保您正在重用数据库连接,创建新的连接可能会很昂贵。如果您的应用程序在本地重用连接,但在应用程序引擎端创建新连接是有原因的,那么可能会产生这种行为。但正如我所说,这似乎不太可能。

    您如何在prod中连接到云SQL?您正在使用本机驱动程序吗?旧的、不推荐的连接方式很慢(尤其是在Python中):-(在已建立的连接上,“选择1”的往返时间应在2ms以下。我正在使用sqlalchemy进行连接,它在引擎盖下使用mysqldb,如下所述。我将编写一个只执行“选择1”的测试看看需要多长时间。我正在使用SqlAlchemy进行连接,正如这里所述,它在引擎盖下使用mysqldb。这是一个很好的想法,尽管连接是错误的。在local/cloudsql测试中,我直接连接到静态IP,但在生产中我使用instancename方法。我将尝试指向IP,看看是否有问题这是有区别的。另外,我正在使用首选位置选项。你有一个不推荐使用的方法的示例吗?这样我可以验证一下吗?查看源代码,sqlalchemy正在幕后使用这个()方法,看起来像这里的示例()在appengineprod中,使用/cloudsql/unix套接字可以获得更好的性能。如果您确实希望在appengineprod中使用IP连接,可以使用Connector/Python(目前,MySQLdb不起作用)@RazvanMusaloiu-E。我并不真的想要IP连接。我要写一个不使用SqlAlchemy的快速测试,看看这是否有区别,因为我很难确定SqlAlchemy在使用什么。好吧,我做了一个测试,绕过了SqlAlchemy,只是像文档中看到的那样连接。我的查询返回,没有json编码,250毫秒。比以前快了3.5秒。所以很明显sqlalchemy的连接方式有问题。谢谢大家的帮助!