2014-09-22 122 views
18

內的數據庫連接我與軌道4和Sidekiq發展以下警告在OS XSidekiq - 無法獲得5.000秒

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

數字/併發性應該在本地主機上?

+0

在PostgreSQL服務器錯誤日誌中是否有錯誤?如果是這樣,他們是什麼? – 2014-09-22 07:48:02

+0

我只看到worker/sidekiq錯誤。我應該在哪裏看到PG錯誤日誌? – 2014-09-22 07:49:16

+0

究竟在哪裏取決於操作系統以及PostgreSQL的安裝/配置方式。如果您遇到困難,請在文檔中查找您的安裝,然後搜索。 – 2014-09-22 07:50:05

回答

30

我將數據庫池設置爲sidekiq併發性,現在它適用於我。

bundle exec sidekiq -c 10 
在我的database.yml

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

它似乎解決了我無法修復一個月的試驗和錯誤的問題。 ** madoxer **從心底裏謝謝你。 – yaru 2016-01-24 09:09:07

+0

謝謝,它解決了我的問題 – 2016-04-06 12:47:35

+0

減少併發數據庫可能有幫助 – 2017-02-20 06:43:23

2

的probem是關係到一個事實,即數據庫池應該是「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 
+0

你可以給我們進一步的信息?爲什麼數字2?我面臨同樣的問題,不知道爲什麼它應該解決問題 – 2017-02-20 12:37:28

+0

這與此有關:https://github.com/mperham/sidekiq/blob/master/4.0-Upgrade.md – jacopobeschi 2017-02-20 14:22:57

+0

似乎有所幫助。謝謝 ! – ZeDalaye 2017-08-02 05:48:57