【问题标题】:Is there any way to reset mysql IDLE/Sleep connections?有没有办法重置 mysql IDLE/Sleep 连接?
【发布时间】:2013-06-20 09:16:37
【问题描述】:

我有一个问题,我的应用程序必须打开大量与 MySQL 的连接并将数据写入其中,但一段时间后,我得到越来越多的处于空闲/睡眠状态的连接,以及我的应用程序的速度减少直到完全停止。我怪'wait_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)

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                  |

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

你认为 wait_timeout 会解决问题吗?顺便说一句,一切都在 Amazon RDS 上。

【问题讨论】:

    标签: mysql sql database amazon-web-services


    【解决方案1】:

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

    KILL thread_id 是从服务器端重置它的正确方法,但这只是实际解决方案的一个补丁,假设这实际上是减慢您的应用程序的原因。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多