PostgreSQL中的数据库连接超时错误

5

目前我正在使用Sidekiq运行后台作业,在运行时出现了"ActiveRecord::ConnectionTimeoutError"。

This is my current database.yml file,

production:
  adapter: postgresql
  encoding: unicode
  database: app_production
  username: password
  password:
  host: app.domain.com
  pool: 25

这是我的sidekiq.yml文件,
production:
    concurrency: 25
    timeout: 300

运行时出现连接超时错误。

我在后台中遇到了这个错误。

could not obtain a database connection within 5 seconds (waited 5.82230675 seconds). The max pool size is currently 25; consider increasing it.
1个回答

8

您的PostgreSQL数据库允许的最大连接数为25。但是,您已将Sidekiq并发设置为25。因此,如果您的所有Sidekiq并发线程都在运行,您将没有任何数据库连接可用于您的应用程序服务器。

要么减少Sidekiq并发量,要么增加池大小(我建议增加池大小)。

默认情况下,Postgres允许100个并发连接。


@vimsa 实际上,在sidekiq本身中出现了错误。是否有可能将数据库连接时间从5秒增加到25秒?您是否检查了错误消息“无法在5秒内(等待了5.82230675秒)获得数据库连接”? - SaravanaKumAr
sidekiq.yml 文件中的 timeout:300 改为 timeout:1500 - usha
@SaravanaKumAr:由于已达到最大连接数,它无法在5秒内建立连接。https://devcenter.heroku.com/articles/concurrency-and-database-connections - usha
@vimsa 我已经在sidekiq.yml中添加了这个。所以我需要将timeout选项添加到database.yml中,对吗? 这样做会有什么问题吗?我的意思是,如果我将超时时间设置为300,它会影响其他进程吗? - SaravanaKumAr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接