告诉Sidekiq使用所有可用的Heroku工人

时间:2013-07-18 11:03:32

标签: ruby-on-rails heroku sidekiq

我需要尽快批量处理大量文件(数百万条数据库记录)。为此,我将文件拆分为3个目录,并使用标准配置(无配置文件)设置Sidekiq。

然后我启动了3名Heroku工作人员并调用了3个方法,这些方法启动了3个Sidekiq工作程序,所有这些工作都具有“默认”队列。最初,Sidekiq使用了2名Heroku工人,过了一段时间,它决定只使用1名工人。

我如何强迫Sidekiq尽快使用所有3名工作人员完成工作?

由于

enter image description here

1 个答案:

答案 0 :(得分: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/