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

标签 node.js http request connection limit

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

It works fine for the individual request but when the outgoing ESTABLISHED tcp connection for the same destination and port(443) reaches five, it cannot create any new connection.

这似乎不是 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();   
});

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

提前致谢。

最佳答案

通常,更改maxSockets 应该可以解决您的问题,请尝试将其值调低一点。

https.globalAgent.maxSockets=20;

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

//Your option code
reqOptions.agent=false;

关于Node.js 传出 Http 请求连接限制(不能建立超过五个的连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849107/

相关文章:

php - 更改 http header 信息以隐藏服务器信息

PHP 或 Apache 删除文件

java - java servlet 中的 Apache Commons fileUpload 问题

javascript - 使用 express node.js 的 Route 但 express.Router 变得未定义

javascript - Socket.io 请求的资源上不存在 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'http://localhost'

node.js - 如何通过node js消费wsdl webservice

node.js - 来自 Mongoose 方法的新文档

java - 使用套接字从 HTTP Post 接收数据

javascript - 如何在 Express JS 的不同文件中创建自己的异步函数

grails - Grails参数映射为java.util.HashMap