守护进程闲置时会占用太多CPU

时间:2014-09-10 13:36:28

标签: ruby-on-rails ruby ruby-on-rails-4 daemon ruby-daemons

我正在使用blue-daemons daemons gem的分叉(因为第二个看起来完全被遗弃)以及daemons-rails gem,它将守护进程包装为rails。

问题是我的守护进程在空闲时占用太多CPU(比实际执行作业高10-20倍)。

闲置,我的意思是我有一个特殊的旗帜 - Status.active?。如果Status.active?true,那么我执行该作业,如果它是false,那么我只是睡了10秒并重复while($running) do块中的下一步并再次检查状态试。

我不想硬停止工作,因为确实存在敏感数据,我不希望这个过程破坏它。有没有什么好方法可以处理高CPU使用率?我尝试过Sidekiq,但看起来它的主要目的是按需或按计划运行作业,但我需要守护进程不间断运行。

$running = true
Signal.trap("TERM") do 
  $running = false
end

while($running) do
  while Status.active? do
       ..... DO LOTS OF WORK ..... 
  else
     sleep 10
  end
end

0 个答案:

没有答案