繁体   English   中英

带有Django的Google Cloud SQL-极慢的连接

[英]Google Cloud SQL w/ Django - Extremely Slow Connection

编辑:

经过进一步调查后,延迟似乎比Django多了Cloud Cloud Proxy。

我在视图的开始和结束处添加了一些打印语句,它们在发出请求时即刻打印,但是页面加载还需要60秒。

我已经剥离了模板文件,只包括裸露的骨骼,删除了大多数脚本和静态资源,并且仍然非常相似。

更改我的视图以返回简单的HttpResponse('Done')大大节省时间。

在本地开发时,我使用Django来提供docs中所述的静态文件。 同样,其他项目也没有这个问题。

原始帖子:

我最近注意到,在本地开发环境中使用Cloud SQL代理时,我的Django应用程序连接到Google Cloud SQL数据库的速度异常慢。

初始连接需要2-3分钟,然后每个请求需要60秒。 这在执行迁移或运行开发服务器时适用。 最终,请求完成。

我尝试扩大数据库规模,但没有任何效果(无论如何,它相对较小)。 数据库版本为MySQL 5.7,机器类型为db-n1-standard-1。 以前,我曾使用Django Channels,但此后删除了所有对此的引用。

Middleware和settings.py是相对标准的,与即时连接的另一个Django应用相同。

实时站点连接也非常快速,没有任何问题。

Python版本是3.6 w / Django 2.1.4和mysqlclient 1.3.14。

我的数据库设置定义为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.getenv('DB_NAME'),
        'USER': os.getenv('DB_USER'),
        'PASSWORD': os.getenv('DB_PASSWORD'),
        'PORT': '3306',
    }
}

DATABASES['default']['HOST'] = os.getenv('DB_HOST')
if os.getenv('GAE_INSTANCE'):
    pass
else:
    DATABASES['default']['HOST'] = '127.0.0.1'

是否使用环境变量似乎没有什么不同。

我正在通过./cloud_sql_proxy -instances="my-project:europe-west1:my-project-instance"=tcp:3306启动Cloud SQL代理。

通过命令行调用代理后,我看到“ Ready for new connections 运行python manage.py runserver显示New connection for "my-project:europe-west1:my-project-instance"但是要花一些时间才能看到Starting development server at http://127.0.0.1:8000/

我还注意到Stackdriver中的几个错误:

  • _mysql_exceptions.OperationalError: (2006, "Lost connection to MySQL server at 'reading initial communication packet', system error: 95")
  • django.db.utils.OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 95")
  • AttributeError: 'SessionStore' object has no attribute '_session_cache'

这些内容会不时显示-或不显示-而无需更改任何设置。

我读过它们可能是访问权限问题,但最终建立了连接,速度非常慢。 我正在通过Google Cloud SDK进行授权,这似乎很好。

最终,我发现延迟的主要来源是在我的一种管理形式(延迟了初始启动)和上下文处理器(延迟了每次加载)中调用了一个递归函数。 删除后,页面加载没有问题。 不过,在将其部署到App Engine或使用测试/本地SQLite数据库时,它运行良好,这使调试变得更加困难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM