2014-09-24 3 views
1

В разработке он работает так, как я ожидал бы, имея 5 потоков (ограниченных на данный момент из-за ограничения соединения redis), он составляет в среднем около 5-7 запущенных процессов, в зависимости от того, делать что-нибудь или нет (иногда работник будет решать не работать, так как объект, который он работает на обновлялся меньше, чем несколько дней назад)sidekiq работает в очередях по производству

development

на производстве, он ведет себя по-разному. Это, кажется, работает в всплесками около 400, а затем немедленно перепланирует рабочих и ждет немного, а затем стреляет очередью снова

enter image description here

Рабочие работают с facebook API (коала драгоценный камень), который для этого I использовать sidekiq-throttler (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

Почему всплески? как может быть обработано 400, если есть только 5 потоков, которые работают? –