ruby-on-rails - sidekiq rails 5
Sidekiq: no se pudo obtener una conexión de base de datos en 5.000 segundos (2)
Configuré el conjunto de bases de datos para la concurrencia de sidekiq y ahora funciona para mí.
bundle exec sidekiq -c 10
en mi database.yml
development:
adapter: postgresql
...
host: localhost
pool: 10
Recibo la siguiente advertencia con Rails 4 y Sidekiq en os x en desarrollo
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''
Leí otras respuestas que dicen para reducir la concurrencia que le doy a sidekiq para permitir más para otras cosas, pero con
worker: bundle exec sidekiq -c 10
todavía no funciona
Estoy usando Postgres.app
¿Qué deben ser los números / concurrencia en localhost?
El problema está relacionado con el hecho de que la base de datos debe ser ''sidekiq_concurrency'' + 2. Si coloca esto en su inicializador de sidekiq, resolverá el problema en general:
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