【问题标题】:Node.js Outgoing Http request connection limit (cannot make connections more than five)Node.js Outgoing Http 请求连接限制(不能超过五个)
【发布时间】:2013-05-31 03:01:28
【问题描述】:

我正在使用 node.js 构建一个数据传输代理服务器。 它使用 http(s) REST API 将客户端的请求通过管道传输到 swift 对象存储服务器。

它适用于个人请求,但当传出 为相同的目标和端口建立了 tcp 连接(443) 达到五,它不能创建任何新的连接。

这似乎不是O/S的问题,因为我尝试使用java servlet创建超过10个连接并且它工作正常。

我尝试为 globalAgent 设置最大套接字,如下所示,但它没有改变任何东西。

http.globalAgent.maxSockets = 500;
https.globalAgent.maxSockets = 500;

这是我的源代码的一部分。

app.post('/download*', function(req, res){

    /***********************************************************
     * Some codes here to create new request option
     ***********************************************************/

    var client = https.request(reqOptions, function(swiftRes) {
        var buffers = [];
        res.header('Content-Length', swiftRes.headers['content-length']);
        res.header('Content-Type', swiftRes.headers['content-type']);
        res.header('range', swiftRes.headers['range']);
        res.header('connection', swiftRes.headers['connection']);

        swiftRes.pipe(res);

        swiftRes.on('end', function(err){
            res.end();
        });
    });

    client.on('error', function(err) {
        callback && callback(err);
        client.end(err);
        clog.error('######### Swift Client Error event occurred. Process EXIT ');
    });

    client.end();   
});

我希望我能得到这个问题的解决方案。

提前致谢。

【问题讨论】:

    标签: node.js http request connection limit


    【解决方案1】:

    通常,maxSockets 的更改应该可以解决您的问题,请尝试使用稍微低一点的值。

    https.globalAgent.maxSockets=20;
    

    如果这不能解决您的问题,请尝试关闭连接池。将值为false 的键agent 添加到请求的选项中。请记住,Node.js 使用池来使用保持活动连接。

    //Your option code
    reqOptions.agent=false;
    

    【讨论】:

    • 谢谢土豆25。我通过禁用用户代理解决了这个问题。
    • @HosangJeon "user-agent" 和 Node 的 http "agent" 一样吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多