【问题标题】:sidekiq runs in bursts on productionsidekiq 在生产中爆发式运行
【发布时间】:2014-09-24 07:42:48
【问题描述】:

在开发中,它按照我的预期运行,有 5 个线程(由于 redis 连接限制,目前受限)它平均运行大约 5-7 个进程,这取决于工作人员是否必须做任何事情(有时工人会决定不工作,因为它正在处理的对象在几天前才更新)

在生产中,它的行为不同。好像是在400左右的burst中跑,然后马上重新安排worker,稍等片刻,然后又拍了一个burst

工作人员使用 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

这是某种已知的症状吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 sidekiq redislabs


    【解决方案1】:

    正如预期的那样,它似乎被限制了。

    【讨论】:

    • 为什么会爆发?如果只有 5 个线程在工作,怎么会有 400 个处理?
    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2019-11-26
    • 2020-03-19
    相关资源
    最近更新 更多