mysql 不尊重 my.cnf 中的 wait_timeout 设置
我在 my.cnf 中设置了 wait_timeout 并重新启动了服务器,但空闲连接的时间继续增长,超过了我设置的默认 100 秒。任何想法为什么会发生这种情况?
PS:我正在运行 ubuntu 12.04 和 Mysql Server 5.5。使用带有 mysql2 gem 的 Rails 3。
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 |
请您参考如下方法:
原来问题出在 mysql2 gem 上。 It does this really awesome thing ...
基本上,它将自己的大约 25 天 (2147483s) 的默认 wait_timeout 值替换为连接使用的 wait_timeout 值(可能是 wait_timeout 的 session 版本),基本上覆盖了我们在服务器上指定的任何设置。
通过在 config/database.yml 中设置 wait_timeout: value 超时工作正常。但是,当连接被终止时,您会收到“mysql server has gone away”错误。
通过指定附带的 reconnect: true database.yml 中的选项,每次重用连接时都会重置连接的计时器,但之后它直接使用 mysql 的 GLOBAL wait_timeout 设置
希望这对某人有所帮助
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。