有没有办法增加ActiveRecord的连接超时?
当我有超过25个线程大小为5的线程时,我一直收到此错误。
(ActiveRecord :: ConnectionTimeoutError)“无法在5秒内获得数据库连接(等待5.000144774秒)。最大池大小目前是3;考虑增加它。”
如果没有办法增加连接超时,那么确保线程尽可能快地使用连接的最佳方法是什么?
答案 0 :(得分:2)
您可以添加
pool: 5
在您的database.yml。
中您也可以设置checkout_timeout
值,但我不建议它,因为您的应用程序可能需要更长时间才能回答它。如果在系统处于许多请求时抛出错误,那么最好只提供更多可能的同时连接,而不是让每个请求等待更长时间才能完成。
答案 1 :(得分:2)
根据docs,您应该在数据库配置文件中设置“checkout_timeout”选项。
checkout_timeout:阻止并等待连接的秒数 在放弃并引发超时错误之前(默认为5秒)。
答案 2 :(得分:-1)
在数据库配置(例如config/database.yml
)中,您可以在几秒钟内为每个数据库连接设置连接超时:
例如,要将connection-timeout设置为30秒:
production:
host: HOST
port: 5432
connect_timeout: 30
...
默认连接超时似乎是60秒,即使这个值可能取决于您使用的适配器(例如,使用PostgreSQL适配器)。