google cloud sql w/django-连接速度非常慢

knpiaxh1  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(447)

编辑:
在做了进一步的调查之后,延迟似乎比云sql代理更为严重。
我在视图的开头和结尾添加了几个print语句,当请求发出时它们会立即打印,但是页面加载还需要60秒。
我剥离了模板文件,只包含了基本内容,删除了大部分脚本和静态资源,但仍然非常相似。
更改视图以返回一个简单的 HttpResponse('Done') 大大缩短了时间。
在本地开发时,我使用django来提供文档中描述的静态文件。再说一次,我对其他项目没有这个问题。
原职务:
我最近注意到,在本地开发环境中使用cloudsql代理时,我的django应用程序连接到googlecloudsql数据库的速度非常慢。
初始连接需要2-3分钟,然后每次请求需要60秒。这适用于执行迁移或运行开发服务器时。最终请求完成。
我尝试过扩展数据库,但没有效果(反正它相对较小)。数据库版本为mysql 5.7,机器类型为db-n1-standard-1。以前我使用过django频道,但后来删除了对它的所有引用。
中间件和 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 .
在通过命令行调用代理之后,我看到 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' 在不改变任何设置的情况下,它们会不时出现或不出现。
我读到他们可能是一个访问权的问题,但最终的连接,它只是难以置信的缓慢。我是通过googlecloudsdk授权的,它看起来很好用。

2j4z5cfb

2j4z5cfb1#

最终我发现延迟的主要来源是一个递归函数,它在我的一个管理窗体(延迟了初始启动)和上下文处理器(延迟了每个加载)中被调用。删除后,页面将无问题加载。但是,当部署到appengine或使用测试/本地sqlite数据库时,它工作得很好,这使得调试变得更加困难。

相关问题