2014-09-24 49 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