4

SO的大师

我正在使用 monit 将 Node.js 作为守护程序运行,结果证明它每 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

这是我来自 monitrc 的 monit 配置

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 似乎经常失败?我还应该在哪里查明这个问题?

谢谢你。

4

2 回答 2

1

似乎您想使用 Monitrc 将 NodeJS 作为服务运行。如果你使用 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/

于 2011-11-09T05:11:43.363 回答
1

首先确保应用程序在多次请求后不会崩溃。一个好的方法是使用 ab(apache benchmark)。如果您确定您的代码是稳定的,那么它可能是 Monit 的问题。

ab -c 10 -n 1000 http://127.0.0.1:8000/
于 2011-09-13T03:50:55.317 回答