0

我正在使用blue-daemons fork of 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
4

0 回答 0