【问题标题】:Tell Sidekiq to use all available Heroku workers告诉 Sidekiq 使用所有可用的 Heroku 工作人员
【发布时间】:2023-10-28 15:48:01
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: ruby-on-rails heroku sidekiq


    【解决方案1】:

    我在本页底部找到了解决方案: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/

    【讨论】:

    • 这仍然是一个有效的解决方案吗?
    最近更新 更多