我需要尽快批处理大量文件(数百万条数据库记录)。为此,我将文件拆分为 3 个目录,并使用标准配置(无配置文件)设置 Sidekiq。
然后我启动了 3 个 Heroku 工作人员并调用了 3 个方法,这些方法启动了 3 个 Sidekiq 工作人员,全部使用“默认”队列。最初,Sidekiq 使用了 2 个 Heroku 工人,过了一段时间它决定只使用 1 个工人。
如何强制 Sidekiq 使用所有 3 名工人尽快完成工作?
谢谢
我需要尽快批处理大量文件(数百万条数据库记录)。为此,我将文件拆分为 3 个目录,并使用标准配置(无配置文件)设置 Sidekiq。
然后我启动了 3 个 Heroku 工作人员并调用了 3 个方法,这些方法启动了 3 个 Sidekiq 工作人员,全部使用“默认”队列。最初,Sidekiq 使用了 2 个 Heroku 工人,过了一段时间它决定只使用 1 个工人。
如何强制 Sidekiq 使用所有 3 名工人尽快完成工作?
谢谢
我在此页面底部找到了解决方案: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/