TypeError:无法读取未定义的属性'addListener'错误:spawn / bin / sh EMFILE
我得到这个错误:
Caught signal; preparing to exit; please wait for 5 seconds [TypeError: Cannot read property 'addListener' of undefined] Caught signal; preparing to exit; please wait for 5 seconds { [Error: spawn /bin/sh EMFILE] code: 'EMFILE', errno: 'EMFILE', syscall: 'spawn /bin/sh', path: '/bin/sh' }
在这个代码之前,我正在获取日志。 实际上,100个读取一些文件的请求正在被Nodejs服务器接收。 可能是什么问题呢? 我已经检查了最大的进程限制是kernel.pid_max = 32768.实际上它产生的进程less于2000个进程。 我可以看到open files
限制在我的帐户已经是15000。
var path = null; if (request.FileType & requestTypeEnum.LocalProgramFileOnly) { path = "../readfile "; } else { path = "../File-loggedin/readfile "; } var cmd = path + tmpobj.name + " recognize " + (request.isfirefox ? "1" : "0") + " " + logobj.name + " " + resobj.name; var exec = require('child_process').exec; exec(cmd, function (error, stdout, stderr) { if (error !== null) { console.log(request.cid + "closing the connection"); } require("fs").readFile(resobj.name, 'utf8', function (err, data) { if (err) { throw err; } //Write into the database store_request_db_success(request, 'File_Actual_LocalSoftware', null, db_params, data); deduct_balance(request, FileCompanies.LocalSoftware); var ret = getInitializedResponseData(request); ret["decoded_File"] = { File: data, s_reqno: request.s_reqno }; try { conn.sendText(JSON.stringify(ret)); } catch (err) { console.log(request.cid, err); } }); });
ulimit -a
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 48033 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 15000 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 48033 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
事实上,超过15000个打开的文件描述符触及了极限。
我刚刚添加了tmpobj.removeCallback();
发送响应之后, conn.sendText
在conn.sendText
之后。 然后,文件描述符在工作完成后closures。
tmpobj
是使用tmp.fileSync
创build的