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

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

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

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

===============>>#1 票数:2 已采纳

你可以加

pool: 5

在您的database.yml中。

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

===============>>#2 票数:2

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

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

===============>>#3 票数:-1

在您的数据库配置(例如, config/database.yml )中,您可以在几秒钟内为每个数据库连接设置连接超时:

例如,要将connection-timeout设置为30秒:

production:
  host: HOST
  port: 5432
  connect_timeout: 30
  ...

默认连接超时似乎是60秒,即使这个值可能取决于您使用的适配器(例如,使用PostgreSQL适配器)。

  ask by Henley Chiu translate from so

未解决问题?本站智能推荐: