web-dev-qa-db-ja.com

Sidekiq-5.000秒以内にデータベース接続を取得できませんでした

Rails 4および開発中のOSxの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を使用しています

ローカルホストの数値/同時実行性はどうあるべきですか?

20
Nick Ginanto

データベースプールをsidekiq同時実行に設定しましたが、今では機能します。

bundle exec sidekiq -c 10

私のdatabase.ymlで

development:
  adapter: postgresql
  ...
  Host: localhost
  pool: 10
35
madoxer

このプローブは、データベースプールが 'sidekiq_concurrency' + 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
3
Jacopo Beschi

Rails <5.2を使用している場合、データベース接続サイズは1に並行性を加えたものにする必要があります。対応するGitHubの問題は次のとおりです。 https://github.com/mperham/sidekiq/issues/4252

5つのスレッドがある場合、データベースプールサイズは6 in Rails <5.2バージョン

0
krishnanand nb