如何在Mysql中删除sleep进程

时间:2011-02-17 07:31:07

标签: mysql database

我发现我的mysql服务器有很多连接都在睡觉。我想删除它们。

所以我如何配置我的mysql服务器,然后删除或处置当前处于休眠状态的连接。

这有可能在mysql中删除这个东西告诉我如何做以下

连接只允许一次datareader打开,并在给予查询后立即销毁连接[process]。

3 个答案:

答案 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