我正在使用MySQL构建一个网站。我使用的是TOAD for MySQL,但突然间无法连接到数据库,因为出现了如下错误:
"Too many connections"
在TOAD for MySQL中,有没有一种方法可以查看现有的连接并将它们关闭或简单地关闭所有连接?
我正在使用MySQL构建一个网站。我使用的是TOAD for MySQL,但突然间无法连接到数据库,因为出现了如下错误:
"Too many connections"
在TOAD for MySQL中,有没有一种方法可以查看现有的连接并将它们关闭或简单地关闭所有连接?
不,MySQL没有内置的命令可以用来实现这个功能。但有一些工具和脚本支持此操作,您可以手动杀死一些连接或重启服务器(但这会更慢)。
使用SHOW PROCESSLIST
查看所有连接,并KILL
想要终止的进程ID。
您可以编辑超时设置,让MySQL守护程序自己终止不活动的进程,或者增加连接数。您甚至可以限制每个用户名的连接数,以便如果该进程继续出现问题,则只受影响的进程是该进程本身,而不会锁定数据库中的其他客户端。
如果您无法再连接到服务器,您应该知道MySQL始终为具有SUPER
特权的用户保留1个额外连接。除非您的进程出于某种原因正在使用该特权的用户名...
然后,在您重新访问数据库之后,您应该修复产生大量连接的进程(网站)。
mysql> SHOW PROCESSLIST;
+-----+------+-----------------+------+---------+------+-------+---------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------------+------+---------+------+-------+----------------+
| 143 | root | localhost:61179 | cds | Query | 0 | init | SHOW PROCESSLIST |
| 192 | root | localhost:53793 | cds | Sleep | 4 | | NULL |
+-----+------+-----------------+------+---------+------+-------+----------------+
2 rows in set (0.00 sec)
mysql> KILL 192;
Query OK, 0 rows affected (0.00 sec)
用户192:
mysql> SELECT * FROM exept;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql> SELECT * FROM exept;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> SELECT * FROM exept; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 804 Current database: xxx
- Tiina虽然您不能使用单个命令杀死所有打开的连接,但如果手动处理过多,您可以创建一组查询来代替。
此示例将为some_user
从192.168.1.1
到my_db
的所有连接创建一系列KILL <pid>;
查询。
SELECT
CONCAT('KILL ', id, ';')
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE `User` = 'some_user'
AND `Host` = '192.168.1.1'
AND `db` = 'my_db';
KILL <pid>
,如何在同一位置执行它? - Prem我建议检查连接,以显示最大线程连接数。
show variables like "max_connections";
示例
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 13 |
+-----------------+-------+
1 row in set
然后通过示例来增加它
set global max_connections = 500;
在MySQL Workbench中:
左侧导航 > 管理 > 客户端连接
它提供了结束查询和连接的选项。
注意:这不是像OP所要求的TOAD,但像我一样使用MySQL Workbench的用户可能会来到这里