调试mysql连接数过多问题

调试mysql连接数过多问题

如果我执行以下任一操作,我的 mysql 数据库会时不时地出现“连接过多”错误

show status like 'Conn%';

我得到了这样的结果

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections   | 291   | 
+---------------+-------+
1 row in set (0.00 sec)

但如果我查看进程列表

SHOW FULL PROCESSLIST; 

我只看到一些真正的联系

+-----+---------+------------------------------+---------+---------+------+-------+-----------------------+
| Id  | User    | Host                         | db      | Command | Time | State | Info                  |
+-----+---------+------------------------------+---------+---------+------+-------+-----------------------+
|  28 | www     | webhost01:38876              | webapp  | Sleep   |    2 |       | NULL                      | 
|  29 | www     | webhost01:53322              | webapp  | Sleep   |    2 |       | NULL                      | 
|  30 | www     | webhost01:45583              | webapp  | Sleep   |    2 |       | NULL                      | 
|  31 | www     | webhost01:35779              | webapp  | Sleep   |    2 |       | NULL                      | 
|  32 | www     | webhost01:49122              | webapp  | Sleep   |    2 |       | NULL                      | 
|  36 | root    | localhost                    | NULL    | Query   |    0 | NULL  | SHOW FULL PROCESSLIST     | 
| 126 | stats   | localhost                    | stats   | Sleep   | 1056 |       | NULL                      | 
+-----+---------+------------------------------+---------+---------+------+-------+-----------------------+

我如何查看所有连接?我怀疑某些应用程序没有关闭其连接,我该如何调试/防止这种情况?

答案1

SHOW STATUS您要查看的值是Threads_connected。 因为Connections仅显示守护进程启动以来的累计连接数。

比较以下值通常很重要:Max_used_connections违背SHOW VARIABLES价值观max_connectionsmax_user_connections

您的进程 ID 计数SHOW PROCESSLIST不是很高,这表明其中一个值可能设置得太低,除非自上次出现错误以来 MySQL 已重新启动。

答案2

“Connections”变量是一个连接计数器,当mysql服务器启动时它是零。 参见手册

相关内容