0

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

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

我的问题是:

  • 我能做些什么来防止这个问题发生在第一个地方?(例如,不要让我超时!!)。
  • 如果做不到这一点,是否可以在某处插入一些代码来自动重新建立 Db 连接?
4

2 回答 2

1

这是一个解决方案:

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

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

于 2008-09-25T06:10:23.417 回答
0

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

  1. 尝试将 config.active_record.verification_timeout设置为低于 mysql 连接超时设置的值。

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

     http://rubyforge.org/projects/zventstools/
     "Reconnect to the MySQL server when you hit a lost connection error".
    
于 2008-09-27T16:33:08.960 回答