54

node.jsをデーモンとして実行するようにサーバーを構成しています。ノードの起動とシャットダウンを処理するようにUpstartを設定しました。これは、すばらしい動作です。次のステップは、node.jsが停止した場合に再起動されることを確認することです。いくつかのガイドは、 Monit(またはFugue )を使用してプロセスを監視することを提案しています(Monitの場合、サーバーに対してHTTP要求を実行し、応答を待機します)。

MonitやFugueのようなものを使用できてうれしいですが、Upstartのリスポーン機能を使用しない(または使用できなかった)理由がわかりません。Upstartは起動されたプロセスのPIDを監視し、プロセスが停止した場合は再度開始すると思います。MonitまたはFugueは、Upstartが提供しないものを提供しますか?

4

2 に答える 2

79

Monit と upstartの両方を使用することを強くお勧めします。Upstart を使用すると、node.js を簡単に無効化できます。また、Monit には、メモリ使用量、http 要求、CPU 使用量など、便利なアプリ チェックが多数含まれています。

これは、入手できる最も基本的なセットアップの例です。また、PID ファイルとモニタリング プロセスの統計情報を使用して、別の monit 構成 (同じ開始スクリプトと停止スクリプトを使用) を簡単に追加することもできます。

以下の構成では、すべてが正常な場合にステータス 200 で応答する単純なローカルのみの要求ハンドラーをアプリに作成します。

構成の監視:

check host app_name with address 127.0.0.1
    start "/sbin/start app_name"
    stop "/sbin/stop app_name"
    if failed port 80 protocol HTTP
        request /ok
        with timeout 5 seconds
        then restart

Upstart スクリプト (/etc/init/app_name):

description "app_name"

start on startup
stop on shutdown

script
    # Node needs HOME to be set
    export HOME="path/to/node/app"

    exec sudo -u nodejs /usr/local/bin/node path/to/node/app/server.js production 2>>/var/log/app_name.error.log >>/var/log/app_name.log
end script
于 2011-01-18T22:37:57.733 に答える
42

Upstart が PID をチェックするだけであることを考えると、実際のリクエストを行う Monit のようなツールは、より忠実にアプリの正気度の答えを提供します。プロセスは正常に実行されていても、リクエストを処理していないなどの理由でスタックしている場合があります。

于 2011-01-18T10:31:12.230 に答える