Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法重置mysql空闲/睡眠连接?_Mysql_Sql_Database_Amazon Web Services - Fatal编程技术网

有没有办法重置mysql空闲/睡眠连接?

有没有办法重置mysql空闲/睡眠连接?,mysql,sql,database,amazon-web-services,Mysql,Sql,Database,Amazon Web Services,我有一个问题,我的应用程序必须打开很多与MySQL的连接并将数据写入其中,但一段时间后,我得到越来越多处于空闲/睡眠状态的连接,我的应用程序的速度降低,直到完全停止。我责备'wait\u timeout'变量太高 mysql> show variables like '%timeout%'; +----------------------------+----------+ | Variable_name | Value | +---------------

我有一个问题,我的应用程序必须打开很多与MySQL的连接并将数据写入其中,但一段时间后,我得到越来越多处于空闲/睡眠状态的连接,我的应用程序的速度降低,直到完全停止。我责备
'wait\u timeout'
变量太高

mysql> show variables like '%timeout%';
+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| connect_timeout            | 10       |
| delayed_insert_timeout     | 300      |
| innodb_lock_wait_timeout   | 50       |
| innodb_rollback_on_timeout | OFF      |
| interactive_timeout        | 28800    |
| lock_wait_timeout          | 31536000 |
| net_read_timeout           | 30       |
| net_write_timeout          | 60       |
| slave_net_timeout          | 3600     |
| wait_timeout               | 28800    |
+----------------------------+----------+
10 rows in set (0.05 sec)

有很多这样的联系。 所以我的主要问题是如何重置连接?我知道我可以杀死PID,但我真的想重置它


你认为等待超时能解决问题吗。顺便说一下,一切都在亚马逊RDS上

您可以减少
等待超时
但您需要确信您的应用程序可以处理由服务器而不是客户端关闭的连接。

您可以减少
等待超时
但您需要确信您的应用程序可以处理由服务器而不是客户端关闭的连接客户端。

我认为
等待超时
可能是错误的解决方案,因为正如@datasage所暗示的,您的应用程序可能无法正常处理它。解决方案是让应用程序在完成连接后正确关闭连接

KILL thread\u id
是从服务器端重置它的正确方法,但这只是实际解决方案的一个补丁,假设这实际上是降低应用程序速度的原因


我的MySQL服务器上通常有数百个休眠线程,因为应用程序将它们保存在池中以供重用。睡眠线程正在睡眠。它们不会减慢任何速度,除非您的连接太多,以致于达到RDS的
最大连接数
限制。

我建议
等待超时
可能是错误的解决方案,因为正如@datasage所暗示的,您的应用程序可能无法优雅地处理它。解决方案是让应用程序在完成连接后正确关闭连接

KILL thread\u id
是从服务器端重置它的正确方法,但这只是实际解决方案的一个补丁,假设这实际上是降低应用程序速度的原因

我的MySQL服务器上通常有数百个休眠线程,因为应用程序将它们保存在池中以供重用。睡眠线程正在睡眠。它们不会减慢任何速度,除非您的连接太多,以至于达到RDS上的
max\u连接数
限制

mysql> SHOW FULL PROCESSLIST;
+------+----------+----------------------------------------------------+-------------+---------+------+-------+-----------------------+
| Id   | User     | Host                                               | db          | Command | Time | State | Info                  |
+------+----------+----------------------------------------------------+-------------+---------+------+-------+-----------------------+
| 5425 | root     | ip-10-xxxxxxxx.ec2.internal:60544                 | my_db  | Sleep   | 2344 |       | NULL                  |
| 5426 | root     | ip-10-xxxxxxxx.ec2.internal:60561                 | my_db  | Sleep   | 2136 |       | NULL                  |