如果我执行以下任一操作,我的 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_connections
和max_user_connections
。
您的进程 ID 计数SHOW PROCESSLIST
不是很高,这表明其中一个值可能设置得太低,除非自上次出现错误以来 MySQL 已重新启动。
答案2
“Connections”变量是一个连接计数器,当mysql服务器启动时它是零。 参见手册