我有一個問題,我的應用程序必須打開很多與MySQL的連接並將數據寫入它,但一段時間後,我得到越來越多的處於空閒/睡眠狀態的連接,並且我的應用程序速度降低直到它完全停止。我責怪'wait_timeout'
變量太高,有什麼辦法可以重置mysql IDLE /睡眠連接?
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上。