如何检查sidekiq是否启动



我正在使用Rails 3的Sidekiq Gem。是否有一种方法可以查看sidekiq工人是否准备好处理工作?我们想要确保的是,这些东西不只是排着队坐在那里。我试过这样做…

stats = Sidekiq::Stats.new
puts stats.queues

但是,如果redis是up的,即使sidekiq还没有准备好处理作业,也将始终返回default => 0。

您可以访问Sidekiq Workers API来访问活动的工作器集:

worker_api = Sidekiq::Workers.new
worker_api.size
 => 1
worker_api.each {|worker| do_stuf(worker) }

最简单的解决方案是访问API并等待,直到预期数量的工作进程通过worker API的size属性启动并运行。

首先,您的工作进程应该正在运行。检查:

ps = Sidekiq::ProcessSet.new
ps.size # => 2
ps.each do |process|
  p process['busy']     # => 3
  p process['hostname'] # => 'myhost.local'
  p process['pid']      # => 16131
end
ps.each(&:quiet!) # equivalent to the USR1 signal
ps.each(&:stop!) # equivalent to the TERM signal
从https://github.com/mperham/sidekiq/wiki/API流程

所以如果他们这样做,你可以排队更多的工作。当工作进程工作时,任务可以留在队列中的唯一情况是,工作进程处理任务的速度比它们进入的速度慢。然后,您的队列将增长,并且在之前的所有作业完成之前不会处理新进入队列的任务。但这是你的责任,找出为什么你的员工表现缓慢。

希望有帮助!

对于我自己,我更喜欢在控制台中运行以下命令(无论是在我的服务器上还是在本地):

ps -ef | grep "sidekiq"

相关内容

  • 没有找到相关文章