我发现我的mysql服务器有很多连接都在睡觉。我想删除它们。
所以我如何配置我的mysql服务器,然后删除或处置当前处于休眠状态的连接。
这有可能在mysql中删除这个东西告诉我如何做以下
连接只允许一次datareader打开,并在给予查询后立即销毁连接[process]。
答案 0 :(得分:5)
为什么要删除睡眠线程? MySQL为连接请求创建线程,当客户端断开连接时,线程被放回缓存并等待另一个连接。
这减少了创建线程“按需”的大量开销,而且没什么好担心的。睡眠线程使用大约256k的内存。
答案 1 :(得分:5)
如果你想手动完成,你可以这样做:
以admin身份登录Mysql:
mysql -uroot -ppassword;
而不是运行命令:
mysql> show processlist;
您将获得以下内容:
+----+-------------+--------------------+----------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+--------------------+----------+---------+------+-------+------------------+
| 49 | application | 192.168.44.1:51718 | XXXXXXXX | Sleep | 183 | | NULL ||
| 55 | application | 192.168.44.1:51769 | XXXXXXXX | Sleep | 148 | | NULL |
| 56 | application | 192.168.44.1:51770 | XXXXXXXX | Sleep | 148 | | NULL |
| 57 | application | 192.168.44.1:51771 | XXXXXXXX | Sleep | 148 | | NULL |
| 58 | application | 192.168.44.1:51968 | XXXXXXXX | Sleep | 11 | | NULL |
| 59 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+-------------+--------------------+----------+---------+------+-------+------------------+
您将看到不同连接的完整详细信息。现在你可以杀死睡眠连接,如下所示:
mysql> kill 52;
Query OK, 0 rows affected (0.00 sec)
答案 2 :(得分:2)
你可以找到所有工作进程执行sql:
show process;
你会发现睡眠过程,如果你想终止它,请记住processid并执行这个sql:
kill processid
但实际上你可以在my.cnf中设置一个超时变量:
wait_timeout=15
connect_timeout=10
interactive_timeout=100