Запуск процесса демона из upstart

Я запускаю свое приложение на 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

Итак, это означает, что ничего исполняется. Я пытался запустить это много раз в разных условиях - ничего, безрезультатно. Это просто не работает.

Могу ли я попытаться заставить это работать или это бесполезно?

4
задан 26 February 2014 в 22:51

1 ответ

Походит на Ваш ОЖИДАТЬ, что строка файла конфигурации является неправильной или не там. Выскочка отслеживает изодромную с предварением несправедливость, Видят поваренную книгу для получения инструкций относительно того, как использовать , ОЖИДАЮТ . Отметьте предупреждение о том, как важный, который должен понять раздел.

Примечание, что, если Ваше приложение является слишком вилкообразным (значение его разветвляется более двух раз) для Выскочки для отслеживания его изодромного с предварением можно быть в состоянии отследить его сами. Приложение может иметь механизм для записи изодромного с предварением файла, или можно быть в состоянии получить его с start-stop-daemon. См. этот ответ для примера, конкретно pg_agent.conf файл.

Редактирование:

Примечание, если Выскочка не может отследить Ваше изодромное с предварением приложение, Вы не будете в состоянии использовать RESPAWN строка файла конфигурации. В этом случае Выскочка не может удовлетворить Вашим потребностям. Возможно, конкурирующий продукт как forever будет. Не знать.

0
ответ дан 26 February 2014 в 22:51

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

Похожие вопросы: