2013-05-14 25 views
16

私たちはプロジェクトの開発を終えていますが、クライアントは既にそれを使用していますが、時折エラーが発生してサーバーがクラッシュすることがあります。ノードサーバーを自動的に再起動する方法は?

クラッシュ時に私のノードサービスを再開させるために、Linux上で 'upstart'スクリプトとしてサービスを登録することができます。

しかし、私たちのサーバーは他のものを実行しているため、再起動できません。 実際に書いている間、私は2つの質問があることを理解しています。

  • 再起動せずに動作するでしょうか?何かがちょうど私にはいをささやくだけです:)
  • もしそうでなければ、クラッシュ時に私のノードサーバーを再起動する必要がありますか?

答えて

25

はい、upstartは再起動せずにプロセスを再起動します。

また、foreverを調べる必要があります。

+3

グローバルエラーハンドラは、joyentのエラー処理ガイド(https://www.joyent.com/developers/node/design/errors)にはお勧めできません。いくつかの未知のバグが例外を引き起こした場合は、デバッグが難しいバグにつながる悪い状態にするよりも、アプリケーションをクラッシュさせて再起動する方が良いでしょう。 – syonip

+0

真。この回答を投稿したとき、私はそれを認識していませんでした。それを指摘してくれてありがとう。私はそれを削除します。 – Daniel

-2

nodemonを使用することもできます。

npm install -g nodemon 

nodemonを開始したnodemonディレクトリ内のファイルを見るなり、彼らが変更された場合、それは自動的にノード・アプリケーションを再起動します。


編集

sudo nodemon server.js 
+11

AFAIK nodemonは、ソースファイルの変更を監視するためのものです。デベロッパーには最適ですが、ライブ展開ではそれほど多くはありません。ウェブサイトを引用するには:「Nodemonは、ソースの変更を監視し、サーバーを自動的に再起動するユーティリティです。 – Boon

+0

これは開発環境のためのコースですが、プロダクション環境ではなぜ自動的にサーバーを再起動する必要がありますか? –

+1

nodemonはクラッシュ時に再起動しません。一部のファイルを変更した場合にのみ再起動されます。他の賢者ではない – Toumi

6

PM2のNode.jsアプリケーションのための生産プロセスマネージャです。

1

自動再起動が常に実行中のアプリケーションである場合は、プロセスマネージャを使用することをお勧めします。一般に、プロセスマネージャはノードプロセスを処理し(クラスタが有効な場合)、プロセス/プロセスの実行を担当します。 PMが稼動システムに傾いている:あなたのノードのアプリケーションとOSは、午後が真ん中にあるので、非常に重なり合わない。

最終的なトリック:プロセスマネージャをアップスタートに配置します。

Hereは完全なパフォーマンス向上の方法です。

関連する問題