【问题标题】:Unhandled error EMFILE in nodejs applicationnodejs应用程序中未处理的错误EMFILE
【发布时间】:2014-06-28 19:40:24
【问题描述】:

在谷歌上我发现这意味着打开了太多文件,但我已经检查过,除了这个服务器之外没有其他文件在运行。有人请帮助我。

events.js:72
投掷者; // 未处理的“错误”事件
^
错误:监听 EMFILE
在 errnoException (net.js:904:11)
在 Server._listen2 (net.js:1023:19)
在听 (net.js:1064:10)
在 Server.listen (net.js:1138:5)
在 Function.app.listen (/home/kkcorps/Desktop/check/node_modules/express/lib/application.js:529:24)
在对象。 (/home/kkcorps/Desktop/check/port_2.js:48:5)
在 Module._compile (module.js:456:26)
在 Object.Module._extensions..js (module.js:474:10)
在 Module.load (module.js:356:32)
在 Function.Module._load (module.js:312:12)

这是我的代码:

var express = require('express');
var path = require('path');

var app = express();

app.configure(function(){
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.static('static'));
    app.set('view engine', 'hbs');
    app.set('views', path.join(__dirname, 'views'));
});

var net = require('net');
var port = 1;
var timeout = 2000;
var open_ports = [];
while(port < 10000)
{
    (function(port){
    var sckt = new net.Socket();
    sckt.setTimeout(timeout, function(){
        sckt.destroy();
    });
    sckt.connect(port,function(){
        console.log('connected to localhost on port: '+ port);
        open_ports.push(port);
        //client.write('connected to localhost');
    });
    sckt.on('error',function(e){
        sckt.destroy();
    });
    })(port);

    port++;
}

//open_ports = ['1','2','3'];
app.get('/', function(req, res){
    //res.send('Hello world');
    res.render('index', {cont: open_ports});
})

app.listen(3000);
console.log('server running on port 3000');

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    "打开的文件太多" => "打开的文件描述符太多"。 Socket === 文件描述符,所以这并不奇怪。您可以尝试 2 件事:调整 ulimit -n(在基于 Unix 的系统上)或/和限制并发:一次打开 10000 个套接字听起来是个坏主意。 async.parallelLimit 是一种方法。

    【讨论】:

    • 我不知道如何,但将我的本地主机 IP(即 127.0.0.1)添加到 socket.connect 程序开始正常运行。
    • 奇怪,和localhost一样吗?
    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多