Я запускаю свое приложение на VPS под Ubuntu 12.04 LTS.
И у меня проблема с одним процессом-демоном для одного из моих приложений. Этот процесс называется «delayed_job» (если он не знаком - это просто обработчик фоновых задач).
Проблема с этим процессом заключается в том, что иногда его убивают (я полагаю, это потому, что у меня ограниченный объем оперативной памяти на моем сервере - всего 1 ГБ).
Но главная проблема в этом состоит в том, что он не способен снова загружаться после сбоя или сигнала «kill», в отличие от процессов «единорог» (это сервер приложений Rails) , которые всегда перезагружаются независимо от того, что с ними происходит.
И да, это очень важно, потому что многие функции приложения используют фоновые задачи.
Та же самая история случается, когда на VPS выполняются работы по техническому обслуживанию (инициированные владельцем VPS) и после перезапуска процесс «delayed_job» больше не присутствует в системе.
Это команда, которую я запускаю каждый раз, чтобы загрузить ее: RAILS_ENV=production script/delayed_job start
Это хорошо известная проблема, но единственное решение, которое я нашел в Интернете, - это статья: http://www.alexreisner.com/code/upstart, в котором предлагается использовать функцию «upstart» в Linux с опцией «respawn», которая способна перезагружать процесс в случае его сбоя или сбоя.
Несмотря на то, что статья немного устарела, я обнаружил, что Ubuntu 12.04 должен поддерживать эту функцию, и я создал символическую ссылку в каталоге /etc/init
(я назвал ее: delayed_job.conf) на " файл delayed_job ", который я поместил бы в одну из папок моих приложений (если быть точным, app_name / config) - я сделал все, что говорится в этой статье.
Моя проблема: когда я пытаюсь загрузить этот новый процесс (start delayed_job
) в консоли, я получаю:
delayed_job start/running, process 6000
Но на самом деле - процесс «delayed_job» вообще не создается.
И состояние (status delayed_job
) процесса initctl по-прежнему: delayed_job stop/waiting
После выполнения kill -9 6000
я получаю -bash: kill: (6000) - No such process
Итак, это означает, что ничего исполняется. Я пытался запустить это много раз в разных условиях - ничего, безрезультатно. Это просто не работает.
Могу ли я попытаться заставить это работать или это бесполезно?
Походит на Ваш ОЖИДАТЬ, что строка файла конфигурации является неправильной или не там. Выскочка отслеживает изодромную с предварением несправедливость, Видят поваренную книгу для получения инструкций относительно того, как использовать , ОЖИДАЮТ . Отметьте предупреждение о том, как важный, который должен понять раздел.
Примечание, что, если Ваше приложение является слишком вилкообразным (значение его разветвляется более двух раз) для Выскочки для отслеживания его изодромного с предварением можно быть в состоянии отследить его сами. Приложение может иметь механизм для записи изодромного с предварением файла, или можно быть в состоянии получить его с start-stop-daemon
. См. этот ответ для примера, конкретно pg_agent.conf файл.
Редактирование:
Примечание, если Выскочка не может отследить Ваше изодромное с предварением приложение, Вы не будете в состоянии использовать RESPAWN
строка файла конфигурации. В этом случае Выскочка не может удовлетворить Вашим потребностям. Возможно, конкурирующий продукт как forever
будет. Не знать.