Daemonized Node.js не удается каждые 60 секунд с Monit - PullRequest
4 голосов
/ 12 сентября 2011

Гуру СО

Я запускаю 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 от 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, по-видимому, так часто выходит из строя? Где еще я должен искать, чтобы точно определить эту проблему?

Спасибо.

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Кажется, вы хотите запустить NodeJS как сервис, используя Monitrc. Если вы используете Ubuntu, то вам стоит подумать об использовании Runit. Я использую его на Amazon EC2 почти 3 месяца без перезапуска, и он стабилен.

Вот руководство по запуску NodeJS в качестве службы:

http://www.yodi.me/blog/2011/09/05/run-nodejs-in-ubuntu-11-dot-04-ec2-with-user-permission-and-run-as-service/

1 голос
/ 13 сентября 2011

Сначала убедитесь, что приложение не падает после нескольких запросов. Хороший способ сделать это с помощью ab (тест Apache). Если вы уверены, что ваш код стабилен, вероятно, это проблема с Monit.

ab -c 10 -n 1000 http://127.0.0.1:8000/
...