【发布时间】:2011-09-01 09:31:00
【问题描述】:
我希望这里的人可以帮助解决我在网络服务器上遇到的问题。目前,该服务器托管一个我们购买的用于帮助台的 Web 应用程序。每隔 8 小时,当有人导航到该页面时,他们就会看到此错误:
[Warning]: PDO::__construct(): MySQL server has gone away (Database/class.SWIFT_Database.php:334)
我已尝试将 wait_timeout 设置为 /etc/my.cnf 文件中的最大值,即;
wait_timeout=31536000
我也从 mysql 中将全局 wait_timeout 设置为该值,并将会话 wait_timeout 设置为相同。
我注意到一些奇怪的行为,当你重新启动 mysql 服务时,等待超时重置为默认值 28800,尽管它是在 my.cnf 中设置的。我找不到任何其他 mysql 配置文件,但很高兴看看是否有人能指出我的方向。
今天早上,当我登录服务器并运行以下命令时,会话 wait_timeout 值已恢复!
mysql> select @@global.wait_timeout, @@session.wait_timeout;
+-----------------------+------------------------+
| @@global.wait_timeout | @@session.wait_timeout |
+-----------------------+------------------------+
| 31536000 | 28800 |
+-----------------------+------------------------+
1 row in set (0.00 sec)
我发现这对于很多在线上运行在 mysql 上的各种 webapps 的人来说是一个问题,但似乎没有人能解决这个问题。很多在线建议都指向 wait_timeout ,但它似乎并没有改变我看到的错误。我已经尝试了mysql手册上关于这个问题的修复,但仍然没有运气(链接:http://dev.mysql.com/doc/refman/5.0/en/gone-away.html)
任何建议将不胜感激。服务器详细信息和产品版本如下:
服务器:OpenSuse 11.4 MySql 版本:5.1.53
提前致谢!
【问题讨论】: