防止Mongrel / Mysql Errno :: EPIPE异常

时间:2008-09-25 04:29:40

标签: mysql ruby-on-rails timeout mongrel

我有一个rails应用程序,我不经常提供XML。 这是用mongrel和mysql运行的。 我发现,如果我不运动应用程序超过几个小时,它就会死机并开始抛出Errno :: EPIPE错误。似乎mysql连接因不活动或类似的事情而超时。

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

我的问题是:

  • 我可以做些什么来防止第一个问题发生? (例如,不要给我时间!!)。
  • 如果失败了,是否有一些代码我可以在某处插入以自动重新制作Db连接?

2 个答案:

答案 0 :(得分:1)

这是一个解决方案:

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

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

答案 1 :(得分:0)

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

  1. 尝试设置 config.active_record.verification_timeout 低于任何值 你的mysql连接超时设置是。

  2. 有一个宝石可以解决这个问题: mysql_retry_lost_connection

     http://rubyforge.org/projects/zventstools/
     "Reconnect to the MySQL server when you hit a lost connection error".