我正在使用 node.js 构建数据传输代理服务器。它使用 http(s) REST API 将客户端的请求通过管道传输到 swift 对象存储服务器。
它适用于单个请求,但是当同一目的地和端口(443)的传出 ESTABLISHED tcp 连接达到五个时,它无法创建任何新连接。
这似乎不是 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();
});
我希望我能得到这个问题的解决方案。
提前致谢。