8

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

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

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

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

4

2 回答 2

7

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

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

于 2016-12-16T16:39:38.363 回答
3

你可以加

pool: 5

在你的 database.yml 中。

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

于 2013-04-16T03:26:53.293 回答