Демон жрет слишком много процессора, когда находится в режиме ожидания

Я использую blue-daemons fork of daemons gem (так как второй выглядит совершенно заброшенным) вместе с gem daemons-rails, который оборачивает демонов для rails.

Проблема в том, что мой демон слишком много потребляет процессор, когда он простаивает (в 10-20 раз выше, чем он фактически выполняет эту работу).

Будучи бездействующим, я имею в виду, что у меня есть специальный флаг - Status.active?, Если Status.active? является trueтогда я выполняю работу, если это falseзатем я просто сплю 10 секунд и повторяю следующий шаг в while($running) do блокировать и проверять статус снова и снова.

Я не хочу жестко останавливать работу, потому что есть действительно конфиденциальные данные, и я не хочу, чтобы процесс их нарушал. Есть ли хороший способ справиться с такой высокой загрузкой процессора? Я пробовал 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 ответов

Другие вопросы по тегам