Ruby on rails Sidekiq-无法在5.000秒内获得数据库连接

Ruby on rails Sidekiq-无法在5.000秒内获得数据库连接,ruby-on-rails,postgresql,concurrency,sidekiq,Ruby On Rails,Postgresql,Concurrency,Sidekiq,在开发OSX时,我在Rails 4和Sidekiq上得到以下警告 10:13:39 worker.1 | 2014-09-22T07:13:39.857Z 86981 TID-oug0oog10 WARN: could not obtain a database connection within 5.000 seconds (waited 5.002 seconds) 10:13:39 worker.1 | 2014-09-22T07:13:39.857Z 86981 TID-oug0oog1

在开发OSX时,我在Rails 4和Sidekiq上得到以下警告

10:13:39 worker.1 | 2014-09-22T07:13:39.857Z 86981 TID-oug0oog10 WARN: could not obtain a database connection within 5.000 seconds (waited 5.002 seconds)
10:13:39 worker.1 | 2014-09-22T07:13:39.857Z 86981 TID-oug0oog10 WARN: /Users/me/.rvm/gems/ruby-2.1.3/gems/activerecord-4.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in `block in wait_poll'
我阅读了其他的答案,这些答案说要减少我给sidekiq的并发性,以允许更多的事情发生,但是

worker: bundle exec sidekiq -c 10 
它仍然不起作用

我正在使用Postgres.app


localhost中的数字/并发应该是多少?

我将数据库池设置为sidekiq并发,现在它对我有效

bundle exec sidekiq -c 10
在my database.yml中

development:
  adapter: postgresql
  ...
  host: localhost
  pool: 10

这个问题与数据库池应该是“sidekiq_并发”+2这一事实有关。如果您将其放入sidekiq初始值设定项中,您通常会解决问题:

Sidekiq.configure_server do |config|
     config = ActiveRecord::Base.configurations[Rails.env] ||
         Rails.application.config.database_configuration[Rails.env]
     config['pool'] = Sidekiq.options[:concurrency] + 2
     ActiveRecord::Base.establish_connection(config)
     Rails.logger.debug("Connection Pool size for Sidekiq Server is now: #{ActiveRecord::Base.connection.pool.instance_variable_get('@size')}")
end

如果我们使用rails<5.2,数据库连接大小应该是1加上并发性。下面是相应的GitHub问题


如果有5个线程,那么rails<5.2版本中的数据库池大小应该为6

PostgreSQL server错误日志中是否有错误?如果是,它们是什么?我只看到worker/sidekiq错误。我应该在哪里查看PG错误日志?具体位置取决于操作系统和PostgreSQL的安装/配置方式。在文档中查找您的安装,如果您被卡住,search.Postgres.app将在/Users/your_NAME/Library/Application Support/Postgres/var-9.4/Postgres-server.log中存储日志file@NickGinanto有消息吗?我也遇到了同样的问题,我想知道这是否能解决它,原因似乎也解决了我一个月的试错都无法解决的问题。madoxer衷心感谢你。谢谢,它解决了我的问题,降低了并发db的可能性help@JamesTan为什么减少并发数据库可能会有所帮助?我也遇到了同样的问题,不知道为什么会有帮助。显然,“池化”线程。@IgnacioChiazzo我认为是因为内存不足或postgresql连接有限,您能给我们提供进一步的信息吗?为什么数字是2?我面临着同样的问题,不知道为什么它应该解决这个问题。这与此相关:似乎有帮助。非常感谢。“+2”与Redis连接相关,而不是与数据库连接相关。现在它甚至是“+5”,谢谢!这是我们代码库中的一个问题,由于您的回答和问题,我能够复制并修复它。还留下了一条评论,其中包含关于Rails 5.2中修复程序的信息