Node.js传出Http请求连接限制(不能连接超过五个)

时间:2013-05-31 03:01:28

标签: node.js http request connection limit

我正在使用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();   
});

我希望我能解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

https.globalAgent.maxSockets=20;

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

//Your option code
reqOptions.agent=false;