Node.js TypeError:无法读取属性';addListener';未定义错误的类型:spawn/bin/sh EMFILE

Node.js TypeError:无法读取属性';addListener';未定义错误的类型:spawn/bin/sh EMFILE,node.js,Node.js,我得到了这个错误: 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

我得到了这个错误:

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' }
我在这个代码之前得到了日志。 实际上,Nodejs服务器正在接收100个读取某些文件的请求可能是什么问题? 我已经检查了最大进程限制,即kernel.pid_max=32768。实际上,它产生的进程不到2000个。我可以在我的帐户中看到
打开的文件
限制已经是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


事实上,超过15000个打开的文件描述符达到了极限

我刚刚添加了
tmpobj.removeCallback()紧跟在conn.sendText之后。然后,当工作完成时,文件描述符关闭

tmpobj
是使用
tmp.fileSync

 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