mysql不尊重my.cnf中的wait_timeout设置

时间:2014-05-22 00:52:23

标签: mysql ruby-on-rails amazon-ec2 mysql2

我在my.cnf中设置了wait_timeout并重新启动了服务器,但空闲连接的时间继续大于我设置的默认值100s。任何想法为什么会发生这种情况?

PS:我正在运行ubuntu 12.04和Mysql Server 5.5。将Rails 3与mysql2 gem一起使用。

mysql> SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST ORDER BY TIME DESC LIMIT 20;
+------+------------------+-------------------------------------+--------------------------+---------+------+-------+------+
| ID   | USER             | HOST                                | DB                       | COMMAND | TIME | STATE | INFO |
+------+------------------+-------------------------------------+--------------------------+---------+------+-------+------+

|  760 | user | ip-xxx-xxx-xxx-xxx.ec2.internal:45852 | x | Sleep   | 4202 |       | NULL |
|  912 | user | ip-xxx-xxx-xxx-xxx.ec2.internal:40929 | y  | Sleep   | 4194 |       | NULL |
|  976 | user | ip-xxx-xxx-xxx-xxx.ec2.internal:40970 | y  | Sleep   | 4193 |       | NULL |
|  836 | user | ip-xxx-xxx-xxx-xxx.ec2.internal:49903   | z | Sleep   | 4189 |       | NULL |
| 1743 | user | ip-xxx-xxx-xxx-xxx.ec2.internal:44585  | z | Sleep   | 4157 |       | NULL |
| 1778 | user | ip-xxx-xxx-xxx-xxx.ec2.internal:48714    | a  | Sleep   | 4154 |       | NULL |

2 个答案:

答案 0 :(得分:6)

原来问题出在mysql2 gem中。 It does this really awesome thing ......

本质上,它将自己的大约25天(2147483s)的默认wait_timeout值替换为连接使用的wait_timeout值(可能是wait_timeout的会话版本),基本上覆盖了我们在服务器上指定的任何设置。

通过在config / database.yml中设置 wait_timeout:value ,超时可以正常工作。然而,当连接被杀死时,你会得到“mysql server off away”错误。

指定随附的重新连接:true database.yml中的选项,每次重用连接时,连接的计时器都会被重置,但之后它会直接使用mysql的GLOBAL wait_timeout设置

希望这有助于某人

答案 1 :(得分:2)

一种可能性是会话的wait_timeout被设置为interactive_timeout系统变量的值。

SHOW VARIABLES LIKE 'interactive_timeout'

默认值为8小时。