代码之家  ›  专栏  ›  技术社区  ›  Mike Berrow

防止mongrel/mysql errno::epipe异常

  •  0
  • Mike Berrow  · 技术社区  · 16 年前

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

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

    我的问题是:

    • 我能做些什么来防止这个问题首先发生?(例如,不要让我超时!!!)
    • 如果失败,我是否可以在某个地方插入一些代码来自动重新创建DB连接?
    2 回复  |  直到 16 年前
        1
  •  1
  •   Chris    16 年前

    以下是解决方案:

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

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

        2
  •  0
  •   Mike Berrow    16 年前

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

    1. 尝试设置 config.active_record.verification_超时 比什么都低的东西 您的MySQL连接超时设置为。

    2. 有一块宝石可以解决这个问题: mysql_retry_lost_连接

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