2013-07-18 77 views
2

我需要儘快批量處理一大組文件(數百萬條數據庫記錄)。爲此,我將這些文件分成3個目錄,並使用標準配置(無配置文件)設置Sidekiq。告訴Sidekiq使用所有可用的Heroku工作人員

然後,我啓動了3名Heroku工作人員,並調用了3種方法,啓動了3名Sidekiq工作人員,所有人都使用「默認」隊列。最初,Sidekiq使用了2名Heroku工人,一段時間後決定只使用1名工人。

我該如何強制Sidekiq使用所有3名工人儘快完成工作?

感謝

enter image description here

回答

6

我發現在這個頁面底部的解決方案:http://manuelvanrijn.nl/blog/2012/11/13/sidekiq-on-heroku-with-redistogo-nano/

# app/config/sidekiq.yml 
:concurrency: 1 

# Procfile  
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb 
worker: bundle exec sidekiq -e production -C config/sidekiq.yml 

另外,如果你有很多工人和自由/廉價Redis的情況下,確保您限制從每個工作人員到Redis服務器的連接數:

# app/config/initializers/sidekiq.rb 
require 'sidekiq' 

Sidekiq.configure_client do |config| 
    config.redis = { :size => 1 } 
end 

Sidekiq.configure_server do |config| 
    config.redis = { :size => 2 } 
end 

您可以在這裏計算最大連接數:http://manuelvanrijn.nl/sidekiq-heroku-redis-calc/

+0

這是否仍然是一個有效的解決方案? – EVX

相關問題