Гуру SO
Я запускаю Node.js в качестве демона с использованием monit, и оказывается, что он терпит неудачу каждые 60 секунд на точке. Здесь мой monit.log
root@mybox:/etc/monit# tail -f /var/log/monit.log
[UTC Sep 4 12:07:50] info : 'nodejs' start: /sbin/start
[UTC Sep 4 12:08:50] error : 'nodejs' failed, cannot open a connection to INET[127.0.0.1:8000] via TCP
[UTC Sep 4 12:08:50] info : 'nodejs' trying to restart
[UTC Sep 4 12:08:50] info : 'nodejs' stop: /sbin/stop
[UTC Sep 4 12:08:50] info : 'nodejs' start: /sbin/start
[UTC Sep 4 12:09:50] error : 'nodejs' failed, cannot open a connection to INET[127.0.0.1:8000] via TCP
[UTC Sep 4 12:09:50] info : 'nodejs' trying to restart
[UTC Sep 4 12:09:50] info : 'nodejs' stop: /sbin/stop
[UTC Sep 4 12:09:50] info : 'nodejs' start: /sbin/start
[UTC Sep 4 12:10:50] info : 'nodejs' connection succeeded to INET[127.0.0.1:8000] via TCP
Здесь мой monit config из monitrc
set logfile /var/log/monit.log
check host nodejs with address 127.0.0.1
start program = "/sbin/start nodeapp"
stop program = "/sbin/stop nodeapp"
if failed port 8000 protocol HTTP
request /
with timeout 10 seconds
then restart
Я делаю что-то неправильно в этой конфигурации или есть какая-то другая причина, по которой Node, кажется, терпит неудачу так регулярно? Где еще я должен искать эту проблему?
Спасибо.
Кажется, вы хотите запустить NodeJS как услугу с помощью Monitrc. Если вы используете Ubuntu, вам следует рассмотреть возможность использования Runit. Я использую его на Amazon EC2 почти 3 месяца без перезапуска, и он стабилен.
Ниже приведено руководство по запуску службы NodeJS:
Сначала убедитесь, что приложение не разбивается после нескольких запросов. Хороший способ сделать это с помощью ab (apache benchmark). Если вы уверены, что ваш код стабилен, вероятно, это проблема с Monit.
ab -c 10 -n 1000 http://127.0.0.1:8000/