Демон жрет слишком много процессора, когда находится в режиме ожидания
Я использую 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