我在开发(DEBUG=True)中使用Django 1.9.2和MySQL 5.6.23。下面是我的数据库设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': "django",
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
'CONN_MAX_AGE': 60,
}
}我正在查询MySQL,以便使用以下命令获取活动连接的数量:
show status where `variable_name` = 'Threads_connected';会产生这样的结果
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_connected | 10 |
+-------------------+-------+
1 row in set (0,00 sec)每次我向Django提出新的请求时,连接线程的数量都会增加,直到我得到(1040, 'Too many connections') (当数量为Threads_connected=151 )为止。此外,60年代以后,连接也不会关闭。
这种行为似乎不会发生在生产(DEBUG=False)中。
发布于 2018-11-21 17:04:52
您在开发模式下运行Django,因此CONN_MAX_AGE无效,因为每个请求都由不同的线程提供服务。来自文档
开发服务器为它处理的每个请求创建一个新线程,从而否定持久连接的影响。在开发期间不要启用它们
关于60秒后未关闭的连接:在启动下一个请求时检查并关闭超时连接。,所以在超过60秒后向django发出一个新的请求,它应该检测到过时的连接并关闭它。
https://stackoverflow.com/questions/36837216
复制相似问题