【问题标题】:Preventing Mongrel/Mysql Errno::EPIPE exceptions防止 Mongrel/Mysql Errno::EPIPE 异常
【发布时间】:2010-09-12 23:42:41
【问题描述】:

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

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

我的问题是:

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

【问题讨论】:

    标签: mysql ruby-on-rails timeout mongrel


    【解决方案1】:

    这里有一个解决方案:

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

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

    【讨论】:

      【解决方案2】:

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

      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".
        

      【讨论】:

        猜你喜欢
        • 2010-11-08
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多