2016-04-28 3 views
1

私のアプリケーションはhttp://talkwithstranger.com/で実行しており、AWS EC2に展開しています。私は、端末を閉じて、私のSSHを終了しても、私のノードJSサーバを実行し続けるには、このコマンドをAmazon EC2 NodeJSサーバーは、sudo nohupを使用しても2日後に停止します

sudo nohup node index.js & 

を使用しています。

しかし、毎週2日後に私は目を覚まし、ノードサーバー自体が自動的に停止することを確認します。

ps -ef 

と実行中のプロセスを確認しましたが、私のノードスクリプトはありません。

Google ChromeのサイトDNSが見つかりません.NodeJS Expressは、自分のhtmlファイルを配信するためのコースを実行していないためです。なぜそれはそれ自体を停止するのですか?

2日おきにサーバーが予期せずシャットダウンする原因は何ですか?手動で再度実行するにはnohupを再度実行する必要があります。

nohupに期限がありますか?

アイデア?事前

+0

メモリリークの可能性がある、おそらく捕捉されない例外です。 'nohup.out'の一番下を確認してください – Paulpro

+0

@Paulpro私はnohup.outファイルをチェックしました。 nohup、outファイルにもエラーが記録されますか?私が眠っている深夜にのみ発生するので、どのように私はそのような未知の例外を追跡することができます。サイトのURLにpingを実行すると自動的にNodeJSを再起動する方法はありますか? – Faizan

+0

@Paulproノード・コンソールの出力をファイルに送信するファイルnohupでこのステートメントが見つかりました。致命的なエラー:半スペースのコミットに失敗しました。割り当てが失敗しました - メモリ不足の処理 これが理由ですか?私のノードプロセスにもっと多くのメモリを割り当てるには? – Faizan

答えて

1

おかげで次のコマンドを使用してforeverな.installを試すことができます。

npm install -g forever 

それからちょうど永遠に起動します。

forever start index.js 
+0

nohupとは永遠にどう違うのですか? – Faizan

+1

永遠の場合、クラッシュした場合にノードを再起動します。私はあなたのノードアプリケーションが何らかの例外を発生させると思います。 –

+0

永遠に実行した後、index.jsを起動します。自分でスクリプトを停止したい場合はどうしたらいいですか? – Faizan

1

あなたはサービス/プロセス・マネージャを使ってNode.jsの実行する必要があります。 foreversupervisordなどの基本的なものを使用できますが、実際にはPM2をご覧ください。

これは、プロセスを管理し、実行を継続し、失敗したときに再起動したり、ログを管理したりするなど、多くのことを行うことができます。サーバ。

http://keymetrics.ioとの組み合わせで本当に強力になります(無料プランもあります)。これにより、CPUやメモリなどのサーバーのメトリックをリモートで監視し、例外が発生したかどうかを確認できます(有料プランでもアラートが送信されます) 、そしてはるかに多く(例えば、gitから引っ張ってソフトウェアを遠隔更新するなど)。 PM2の

基本的な使用法:

npm install -g pm2 

... PM2をインストールします。

pm2 start my_script.js 

スクリプトを開始し、バックグラウンドで実行できるようにします。

pm2 status 

実行中のスクリプトのステータスを表示します。

pm2 restart all 

実行中のスクリプトをすべて再起動します。

pm2 logs 

CPUとRAMの使用状況を監視して表示します。

pm2 monit 

出力およびエラーログの最後の20行を表示し、ライブログをコンソールにストリーミングします。ログはフォルダ~/.pm2/logsに保存されます。

PM2を使用すると、スクリプトは停止しません。ほとんどの場合、スクリプトは再起動します。そして、そうすれば、なぜ簡単にログにアクセスしてメモリの使用状況などを見ることができるのかを簡単に理解することができます。

+0

私のnohupでこの文が見つかりましたノードコンソールの出力をファイルに送信する致命的なエラー:半空間のコミットに失敗しました。割り当てが失敗しました - メモリが足りなくなりましたこれが理由でしょうか?私のノードプロセスにもっと多くのメモリを割り当てるには?またはこの問題を解決する方法は? – Faizan

+1

メモリリークを解消する必要があります。たとえば、https://www.toptal.com/nodejs/debugging-memory-leaks-node-js-applicationsを参照してください。 – CherryDT

+0

ありがとうございます@cherryDT、私は、私は現在永遠に使用していますが、私のサーバーはまだクラッシュ、あなたはここで見てみてください私はどのように私はノードjsのエラーを修正することができますか教えてくださいお願いします私はあなたがJSの専門家として助けることができると確信しています。私の質問http://stackoverflow.com/questions/37570346/node-js-app-crashing-itself-even-after-using-forever-js/37571484?noredirect=1#comment62633618_37571484 – Faizan

関連する問題