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

最初に、複数のリクエストの後でアプリケーションがクラッシュしないことを確認してください。これを行う良い方法は、ab (apache ベンチマーク) を使用することです。コードが安定していることが確実な場合は、Monit に問題がある可能性があります。

ab -c 10 -n 1000 http://127.0.0.1:8000/
于 2011-09-13T03:50:55.317 に答える
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 に答える