防止Mongrel / Mysql Errno :: EPIPE异常

时间:2020-03-06 14:42:13  来源:igfitidea点击:

我有一个Rails应用,很少使用XML。
这是与mongrel和mysql一起运行的。
我发现如果我不使用该应用程序超过几个小时,它就会死机并开始引发Errno :: EPIPE错误。似乎mysql连接因不活动或者类似原因而超时。

可以使用'mongrel_rails restart -P /path/to/the/mongrel.pid'重新启动它...但这并不是真正的解决方案。
我的合作者希望该应用程序在工作时就在那里(而且我很可能不在身边)。

我的问题是:

  • 我该怎么做才能防止此问题发生在第一名? (例如,不要让我超时!)。
  • 如果失败,是否可以在某些地方插入一些代码以自动重新建立Db连接?

解决方案

这是一个解决方案:

https://boxpanel.blueboxgrp.com/public/the_vault/index.php/Mongrel_/_MySQL_Timeout

上述解决方案的超时对我来说似乎有点高。由于连接可以使用的内存量,我们不希望数据库超时太低。如果连接是孤立的,则我们希望它合理地超时(例如不在一周之内)。

在其他地方,我也得到以下建议:

  • 尝试将config.active_record.verification_timeout设置为低于mysql连接超时设置的值。
  • 有一个替代方法可以解决此问题:mysql_retry_lost_connection
http://rubyforge.org/projects/zventstools/
 "Reconnect to the MySQL server when you hit a lost connection error".