我有一个问题,我的应用程序必须打开很多与 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 上。