首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django没有用CONN_MAX_AGE=60重用到CONN_MAX_AGE=60的连接

Django没有用CONN_MAX_AGE=60重用到CONN_MAX_AGE=60的连接
EN

Stack Overflow用户
提问于 2016-04-25 09:53:29
回答 1查看 2.1K关注 0票数 4

我在开发(DEBUG=True)中使用Django 1.9.2和MySQL 5.6.23。下面是我的数据库设置

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbname',
        'USER': "django",
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
        'CONN_MAX_AGE': 60,
    }
}

我正在查询MySQL,以便使用以下命令获取活动连接的数量:

代码语言:javascript
复制
show status where `variable_name` = 'Threads_connected';

会产生这样的结果

代码语言:javascript
复制
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 10    |
+-------------------+-------+
1 row in set (0,00 sec)

每次我向Django提出新的请求时,连接线程的数量都会增加,直到我得到(1040, 'Too many connections') (当数量为Threads_connected=151 )为止。此外,60年代以后,连接也不会关闭。

这种行为似乎不会发生在生产(DEBUG=False)中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-21 17:04:52

您在开发模式下运行Django,因此CONN_MAX_AGE无效,因为每个请求都由不同的线程提供服务。来自文档

开发服务器为它处理的每个请求创建一个新线程,从而否定持久连接的影响。在开发期间不要启用它们

关于60秒后未关闭的连接:在启动下一个请求时检查并关闭超时连接。,所以在超过60秒后向django发出一个新的请求,它应该检测到过时的连接并关闭它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36837216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档