【问题标题】:How to increase ActiveRecord connection timeout?如何增加 ActiveRecord 连接超时?
【发布时间】:2013-04-08 07:57:05
【问题描述】:

有没有办法增加 ActiveRecord 的连接超时时间?

当我有超过 25 个线程且池大小为 5 时,我不断收到此错误。

(ActiveRecord::ConnectionTimeoutError) "无法在 5 秒内获得数据库连接(等待 5.000144774 秒)。最大池大小当前为 3;考虑增加它。"

如果没有办法增加连接超时,那么确保线程尽快使用连接的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    根据docs,您应该在数据库配置文件中设置“checkout_timeout”选项。

    checkout_timeout:阻塞和等待连接的秒数 在放弃并引发超时错误之前(默认 5 秒)。

    【讨论】:

      【解决方案2】:

      你可以添加

      pool: 5
      

      在您的 database.yml 中。

      您也可以设置checkout_timeout 值,但我不推荐它,因为您的应用程序可能需要更多的时间来回答它。如果在系统收到许多请求时抛出错误,最好只提供更多可能的同时连接,而不是让每个请求等待更长的时间才能完成。

      【讨论】:

      • "pool" 改变连接池的大小,而不是连接获取超时
      • @barbolo 关于错误的建议说The max pool size is currently 3; consider increasing it
      • @fotanus 我有同样的错误,但我的池已经是 5,但没有超时。我该怎么办
      猜你喜欢
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2018-12-08
      • 2018-04-17
      • 2014-04-16
      • 1970-01-01
      相关资源
      最近更新 更多