Ben*_*gal 6 python mysql django
我在开发中使用 Django 1.9.2 ( DEBUG=True) 和 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,
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令查询 MySQL 以获取活动连接数:
show status where `variable_name` = 'Threads_connected';
Run Code Online (Sandbox Code Playgroud)
它产生这样的结果
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_connected | 10 |
+-------------------+-------+
1 row in set (0,00 sec)
Run Code Online (Sandbox Code Playgroud)
每次我向 Django 发出新请求时,连接的线程数都会增加,直到我(1040, 'Too many connections')得到Threads_connected=151. 此外,60 秒后连接不会关闭。
这种行为在生产中似乎不会发生(DEBUG=False)。
您正在开发模式下运行 Django,因此CONN_MAX_AGE无效,因为每个请求都由不同的线程提供服务。\n来自文档:
\n\n开发服务器为其处理的每个请求创建一个新线程,从而消除持久连接的影响。不要在开发过程中启用它们
\n
关于60秒后未关闭连接:在启动下一个请求时会检查并关闭超时连接,因此只要在超过60秒后向django发出新请求,它应该检测到过时的连接并将其关闭。
\n| 归档时间: |
|
| 查看次数: |
2861 次 |
| 最近记录: |