開発中は、期待どおりに動作し、ワーカーが何かを行う必要があるかどうかに応じて、平均して約 5 ~ 7 のプロセスが実行されます (ワーカーが作業中のオブジェクトが更新されてから数日経っていないため、作業しないことを決定します)
本番環境では、動作が異なります。約 400 のバーストで実行されているようで、すぐにワーカーのスケジュールを変更し、少し待ってから再びバーストを撃ちます。
ワーカーは facebook API (koala gem) で動作します。これには、sidekiq-throttler ( https://github.com/gevans/sidekiq-throttler )を使用します。
オプションで
sidekiq_options throttle: { threshold: 50, period: 60.seconds , key: ->(user_id){ "facebook:#{user_id}"} }
procfileでherokuとredislabs(現時点では無料プラン)を使用しています
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
これは何かの既知の症状ですか?