2016-11-21 5 views
0

Ich erhalte diesen Fehler. Während sich eine Person an der Anwendung anmeldet, werden die Protokolle mithilfe von UtilityWrapper in eine Datei eingegeben. Diese Datei wird gelesen/geschrieben, wenn irgendeine Aktivität in der Anwendung stattfindet. Dann plötzlich nach einiger ZeitFehler: spawn EMFILE-Knoten js

'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) 

Dieser Fehler kommt auf. Bitte helfen Sie mir.

+0

EMFILE bedeutet normalerweise, dass auf Ihrem Host-Computer keine verfügbaren Sockets mehr verfügbar sind (ähnlich wie bei gleichzeitig geöffneten Dateien im System). Dieser Fehler bezieht sich nicht direkt auf NodeJS, sondern auf UNIX. Mehr dazu hier: http://blog.izs.me/post/56827866110/wtf-is-emfile-and-why-does-it-happen-to-me. Wenn es jedoch auf reinem System passiert, ohne irgendeine spezielle Konfiguration zu "ulimit", würde ich vermuten, dass Sie möglicherweise Dateien rekursiv oder in einer Schleife irgendwo im Code öffnen, und diese Schleife hat keine Stoppbedingung (daher Ihre Node.JS-Prozess öffnet zu viele Dateien). – SzybkiSasza

Antwort

1

Dies war aus verschiedenen Gründen passiert. Der Code hatte viele console.logs, die viele Dinge an der Eingabeaufforderung, auf der der Server ausgeführt wurde, druckten. Beim Schreiben in eine Datei wurde ein Dateideskriptor verwendet (fd). Die ulimit von Dateideskriptor ist 1024. den Befehl

lsof - -i -n -P | grep nodejs 

konnte ich die Informationen über die einzelnen fd erfassen. Fd Zählung verwendet, um zu erhöhen, wenn ein Benutzer in die Anwendung loogged. Die ldap Sockets und mysql Db Verbindungen verbraucht auch eine große Menge von fd. Also Leute behalten diese Punkte im Auge, wenn Sie diese Art von Fehler bekommen.