2016-11-21 6 views
0

Node.js、Express、およびMongooseを使用してアプリケーションを構築しています。私はCloud9を開発環境に使用しています。私は私のアプリのベースを作成するためにエクスプレスジェネレータを使用し、それに追加されています。ランダムにクラッシュするExpress/Node Server、events.js ECONNRESET

一見ランダムにこのエラーが発生し、サーバーが停止します。特定のイベント中に発生することはありません。ページロードの間に発生します。特定のページには発生していないようです。

私はいつもこのエラーを受けています。私はいつもそれをやり直す必要があります。

events.js:141 
     throw er; // Unhandled 'error' event 
    ^

Error: read ECONNRESET 
    at exports._errnoException (util.js:870:11) 
    at TCP.onread (net.js:552:26) 

このエラーが発生した場合、MongoDBはクラッシュしません。ノードサーバーを再起動するだけで正常に動作します。それが再びランダムにクラッシュするまで。

このエラーが単なるC9の副作用であるかどうかはわかりませんが、もし私が心配していなければ、それは実際には生産上では起こりたくありません。ログはほぼ同じくらい簡単です。

私が本当に "エラーを処理する"に失敗した場合、私はどこでそれをやるべきかを知りたいのですが、問題が発生したときにクラッシュしないようにサーバーを好むでしょう。

答えて

1

を参照してください。エラーがある場合、サーバーはクラッシュしません。それはちょうどエラーをスローし、実行を続けます。また、他の便利な機能もあります。

あなたは、私が聞いてすることになっていますここhttps://www.npmjs.com/package/pm2

+0

本質的に私が知る必要があったのはありがとうございました。私はいずれにしてもPM2を使用する予定でした。私はすべて設定する必要があると思う。 – stackers

2

ノード内では、whenever an 'error' event is emitted and no one listens to it, it will throwです。
スローしないようにするには、リスナーを置いて自分で処理します。そうすれば、より多くの情報でエラーを記録できます。

有用なnode.jsオプション--abort-on-uncaught-exceptionを試すこともできます。さらに冗長で有用なエラースタックトレースを提供するだけでなく、アプリケーションクラッシュ時にコアファイルを保存してデバッグを可能にします。

コールのグループに対して1つのリスナーを使用する場合は、domainsを使用し、実行時に他のエラーもキャッチできます。 http(Server/Client)に関連する非同期操作がコードの他の部分と比較して異なるドメインコンテキストにあることを確認すると、ドメインは自動的にエラーイベントをリッスンし、それを自身のハンドラに伝播します。そのハンドラを聞いてエラーデータを取得するだけです。あなたは無料のhereについてさらに多くの情報を得る。

は、あなたがあなたのサーバーを起動するためのpm2を使用することができますもこのSO answer ...

+0

PM2についての詳細を読むことができますか?すべてのルートで? – stackers

+0

私の編集を参照してください.... – MarcoS

+0

リンク先のページは適切な場所に移動していないようですが、そのページでは見つからない – stackers

関連する問題