2016-11-21 15 views
0

このエラーが発生します。ユーザーがアプリケーションにログインするとき、ログはutilityWrapperを使用してファイルに入力されます。このファイルは、アプリケーションで何らかのアクティビティが発生したときに読み書きされます。その後、しばらくしてから突然エラー:EMFILEノードを生成します。

'throw errnoException(process._errno, 'spawn'); 
Error: spawn EMFILE 
    at errnoException (child_process.js:988:11) 
    at ChildProcess.spawn (child_process.js:935:11) 
    at Object.exports.spawn (child_process.js:723:9) 
    at Object.Logger (/web/utilityWrapper.js:21:17) 
    at process.env.NODE_TLS_REJECT_UNAUTHORIZED (/web/server.js:141:17) 
    at process.EventEmitter.emit (events.js:95:17) 
    at process._fatalException (node.js:272:26) 

このエラーが発生します。 私を助けてください。

+0

EMFILEは通常、ホストマシンに使用可能なソケットがなくなったことを意味します(これは、システムで同時に開いているファイルに似ています)。このエラーはNodeJSではなく、UNIXに直接関連しています。詳細はこちら:http://blog.izs.me/post/56827866110/wtf-is-emfile-and-why-does-it-happen-to-me しかし、純粋なシステムで、 'ulimit'に特別な設定をせずに起こるならば、私はあなたがファイルを再帰的にまたはコード内のどこかのループでオープンする可能性があります。 Node.JSプロセスが開くファイルが多すぎます)。 – SzybkiSasza

答えて

1

これは、さまざまな理由で発生しました。このコードには、サーバーが稼働していたコマンドプロンプトに多くのものを印刷していたconsole.logsが多数ありました。ファイルへの書き込み中は、ファイル記述子(fd)を使用していました。ファイルディスクリプタのulimitは1024 私は各fdについての情報を取得することができたコマンド

lsof - -i -n -P | grep nodejs 

を使用しています。 Fdユーザーがアプリケーションにぎこちなくなったときにカウントが増加しました.ldapソケットとmysql db接続でも、大量のfdを消費しました。 この種のエラーが発生した場合、これらの点を覚えておいてください。

関連する問題