首页 > 解决方案 > 用于确定 Sidekiq 中给定队列正在运行多少线程的命令

问题描述

我正在探索sidekiq API,并试图找到一种方法来检查给定队列,在给定时刻有多少线程正在运行(我正在使用sidekiq limit fetch gem https://github.com/brainopia/sidekiq- limit_fetch,我想确保我在配置文件中设置的限制得到尊重)。我看了一下workers = Sidekiq::Workers.new应该保存有关线程的信息,但它实际上没有显示有关线程数的任何信息。有没有办法在 sidekiq 的给定时刻找出特定队列有多少线程正在运行?

标签: rubymultithreadingsidekiq

解决方案


我想你对Sidekiq::ProcessSet.new. 从文档:

Sidekiq::ProcessSet让您访问有关当前运行的 Sidekiq 进程集的近实时(每 5 秒更新一次)信息。您还可以远程控制进程:

ps = Sidekiq::ProcessSet.new
ps.size # => 2
ps.each do |process|
  p process['busy']     # => 3
  p process['hostname'] # => 'myhost.local'
  p process['pid']      # => 16131
  p process['concurrency'] # => 10 <- this is the number of threads per process
end

推荐阅读