0

レールのデーモンをラップするdaemons-rails gemとともに、 daemons gemのblue-daemonsフォークを使用しています(2番目のものは完全に放棄されているように見えるため) 。

問題は、デーモンがアイドル状態のときに CPU を大量に消費することです (実際にジョブを実行している時間の 10 ~ 20 倍)。

アイドルであるということは、特別なフラグを持っていることを意味します - Status.active?。の場合Status.active?trueジョブを実行し、 の場合はfalse10 秒間スリープして、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