Ответ 1
Я устанавливаю пул базы данных в sidekiq concurrency, и теперь он работает для меня.
bundle exec sidekiq -c 10
в моей базе данных .yml
development:
adapter: postgresql
...
host: localhost
pool: 10
Я получаю следующее предупреждение с Rails 4 и Sidekiq на os x при разработке
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'
Я читал другие ответы, которые говорят, чтобы уменьшить concurrency я даю sidekiq, чтобы позволить больше для других вещей, но с
worker: bundle exec sidekiq -c 10
он по-прежнему не работает
Я использую Postgres.app
Какими должны быть числа / concurrency в локальном хосте?
Я устанавливаю пул базы данных в sidekiq concurrency, и теперь он работает для меня.
bundle exec sidekiq -c 10
в моей базе данных .yml
development:
adapter: postgresql
...
host: localhost
pool: 10
Пробем связан с тем, что пул баз данных должен быть "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