【问题标题】:How should I handle connection timeouts in Ruby Sequel?我应该如何处理 Ruby Sequel 中的连接超时?
【发布时间】:2012-12-14 00:38:50
【问题描述】:

我正在使用 Sequel 从 Rack webapp 与 MySQL 数据库通信。有时,应用程序空闲的时间足够长,以至于它超过了服务器上的wait_timeout(我们已将其保留为默认的 8 小时)。异常表明我们可以启用autoReconnect,但显然那是not encouraged。无论如何,在那种情况下,我仍然会遇到异常,并且必须重试操作。

如果autoReconnect 是一个不好的模式,我应该使用什么模式?我想做的是

DB["myDB"].pool.hold do | conn |
  ... do stuff
end

但如果连接过时,当然会抛出。我可以将整个事情包装成一个开始救援,然后再试一次,但如果我有一个大池,我最终可能会重试 10 或 20 次,然后才能找到一个有效的。

【问题讨论】:

    标签: mysql ruby rack sequel


    【解决方案1】:

    有三种可能的解决方案:

    1) 增加wait_timeout。

    2) 使用 cron 作业,以便比 wait_timeout 更频繁地使用连接。

    3) 使用 connection_validation 扩展,如果检测到断开连接,它将透明地处理重新连接。

    【讨论】:

    • 似乎最近添加了 connection_validator -- 我必须更新我的版本才能尝试它,但这听起来正是我在市场上想要的。
    猜你喜欢
    • 2016-08-31
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多