2014-09-24 46 views
1

在开发过程中,它按照我的预期运行,拥有5个线程(由于redis连接限制,目前受限),平均在大约5-7个进程运行,取决于工作人员必须做任何事情,或者没有(有时工人会决定不工作,因为对象是工作在比前几天少更新)sidekiq在生产中突发运行

development

生产,它的行为不同。它似乎在大约400脉冲时运行,然后立刻重新安排工作人员和等待了一下,然后拍摄了一阵又

enter image description here

工人与Facebook API(考拉宝石),工作这对于这一点,我使用sidekiq-调节器(https://github.com/gevans/sidekiq-throttler

sidekiq_options throttle: { threshold: 50, period: 60.seconds , key: ->(user_id){ "facebook:#{user_id}"} } 

我使用的Heroku和redislabs(目前免费计划)与procfile选项

web: bundle exec puma -C config/puma.rb 
worker: bundle exec sidekiq -c 5 

和sidekiq设置:

Sidekiq.configure_server do |config| 
    config.redis = { :url => "#{ENV['REDISCLOUD_URL']}", :namespace => 'sidekiq'} 
    config.server_middleware do |chain| 
    chain.add Sidekiq::Throttler, storage: :redis 
    end 
end 

Sidekiq.configure_client do |config| 
    config.redis = { :url => "#{ENV['REDISCLOUD_URL']}", :namespace => 'sidekiq' } 
end 

这是什么一个已知的症状?

回答

1

看起来像是被扼杀,如预期。

+0

为什么爆发?如果只有5个线程在工作,那么如何处理400个? – 2014-09-24 16:07:13