2013-05-14 7 views
16

Мы заканчиваем разработку проекта, клиент уже использует его, но иногда возникают ошибки - сбой сервера.Как автоматически перезапустить сервер узлов?

Я знаю, что я мог бы зарегистрировать службу как сценарий «upstart» на linux, чтобы перезагрузить мой узел, когда он сработает.

Но наш сервер работает с другими вещами, поэтому мы не можем его перезапустить. Ну, на самом деле, во время написания, я понимаю, у меня есть два вопроса, то:

  • будет «выскочку» работать без перезагрузки? Что-то просто шепчет да мне :)
  • Если нет, то какой другой вариант я должен был бы «вернуть» мой узел-сервер при его сбое?

ответ

25

Да, upstart перезапустит ваш процесс без перезагрузки.

Кроме того, вы должны изучить forever.

+3

Глобальный обработчик ошибок обескуражен справочником joyent по обработке ошибок: https://www.joyent.com/developers/node/design/errors. Если какая-то неизвестная ошибка вызвала исключение, лучше свернуть приложение (и перезапустить его), чем оставить его в плохом состоянии, что приведет к более сложным отладкам ошибок. – syonip

+0

Правда. Я не знал об этом, когда писал этот ответ. Спасибо, что указали это. Я уберу это. – Daniel

-2

вы также можете использовать nodemon.

npm install -g nodemon 

nodemon будут смотреть файлы в каталоге, nodemon был запущен, и в случае их изменения, он будет автоматически перезапустить приложение узла.


Редактировать

sudo nodemon server.js 
+11

AFAIK nodemon предназначен для просмотра изменений в исходных файлах. Отлично подходит для разработчиков, но не для живого развертывания. Чтобы процитировать сайт: «Nodemon - это утилита, которая будет отслеживать любые изменения в вашем источнике и автоматически перезапускать ваш сервер». – Boon

+0

Отключить это для среды разработчиков, в производстве, почему вам нужно перезагрузить сервер автоматически? –

+1

nodemon не перезапускается при сбое. он перезапускается, только если вы меняете некоторые файлы. другой мудрый не – Toumi

6

PM2 является менеджером процесса производства для Node.js приложений.

1

Если ваш фокус на автоматический перезапуск - это всегда работающее приложение, я предлагаю использовать диспетчер процессов. В общем случае диспетчер процессов обрабатывает процесс узла (es, если включен кластер) и отвечает за выполнение процесса/es. PM опирается на оперативную систему: ваше приложение-узел и ОС не так сильно связаны, потому что pm находится посередине.

Окончательный трюк: положить менеджер процесса на выскочку.

Here - это полный путь улучшения производительности.

Смежные вопросы