NodeJS — Поддерживайте работу моего приложения навсегда

В настоящее время на моем сервере работает служба NodeJS. Он предоставляет RestAPI благодаря HAPI.JS.

Эта служба работает постоянно с навсегда, выполняемой в сценарии upstart, но у меня возникли некоторые проблемы.

Иногда сервис выдает такую ​​ошибку:

Debug: internal, implementation, error 
    TypeError: Uncaught error: Cannot call method 'replace' of undefined....

На данный момент сервер полностью выключен и никогда не перезагружается :(

Мне нужен 100% стабильный сервис, поэтому мне приходится перезапускать его при появлении ошибки.

Мой вопрос :

Как я могу навсегда перезапустить службу NodeJS при возникновении ошибок?


person Quentin DESBOIS    schedule 26.08.2015    source источник
comment
можешь выложить код который выдает ошибку?   -  person Clarkie    schedule 26.08.2015
comment
1. Найдите трассировку ошибки 2. Можете ли вы разместить свою команду навсегда?   -  person bluesman    schedule 26.08.2015
comment
Эта ошибка была просто примером. Я могу исправить это, это не проблема. У меня может возникнуть другая ошибка, и я не могу ее предсказать, поэтому мне нужно перезапустить процесс.   -  person Quentin DESBOIS    schedule 27.08.2015
comment
моя команда проста (в выскочке или непосредственно в командной строке): - навсегда запустить restAPI/index.js - навсегда перезапустить restAPI/index.js И затем я просматриваю журнал в /root/.forever/MYUID.log   -  person Quentin DESBOIS    schedule 27.08.2015


Ответы (2)


Запускайте приложение с pm2, а не навсегда. Pm2 перезапустит сервер узла даже после неперехваченных исключений.

person marekful    schedule 26.08.2015
comment
Оооо вроде хорошо. Я попробую, и я верну свое мнение о PM2. Благодарю вас. - person Quentin DESBOIS; 27.08.2015
comment
Добро пожаловать и счастливого дня голосующему без комментариев! :) - person marekful; 27.08.2015
comment
Woooww, я установил PM2, и это очень мощное решение. Я использую веб-страницу KeyMetrics для мониторинга своего ведра. Это потрясающе. Могу ли я получить Премиум-аккаунт через несколько месяцев. Еще раз спасибо Marekful ;) - person Quentin DESBOIS; 27.08.2015
comment
Я предполагаю, что отрицательный голос связан с тем, что ваш ответ на самом деле не отвечает на вопрос. Это совершенно правильное решение для реального мира, но оно не решает реальной проблемы. - person Clarkie; 27.08.2015

Если процесс завершается ошибкой при запуске, он не перезапускается автоматически. Вы можете настроить флаг минимального времени безотказной работы --minUptime.

Затем вы можете использовать флаг --watch для отслеживания изменений исправления.

Однако конкретная ошибка, которую вы получаете, обычно не останавливает процесс Hapi, что предполагает, что это не проблема forever.

person Clarkie    schedule 26.08.2015
comment
Вы имеете в виду, что мой процесс Hapi должен перезапуститься навсегда, если появится ошибка? Однако это не проблема при запуске, поэтому я не думаю, что мне нужен --minUptime. - person Quentin DESBOIS; 27.08.2015
comment
да, навсегда должен поддерживать процесс. Если вы запустите процесс, то kill [pid] на сервере процесс должен перезапуститься. - person Clarkie; 27.08.2015
comment
Спасибо :) но, наконец, я предпочитаю использовать PM2. - person Quentin DESBOIS; 27.08.2015