我正在构建一个应用程序,将向远程API服务器发出大约一百万个调用。我能否限制连接数量,例如限制为10个?如果将最大套接字设置为10,是否可以实现这一点?
我正在尝试理解这些参数的作用:
keepAlive: false,
maxSockets: 999,
maxFreeSockets: 1
在 Node 的 http get 函数中,以下是代码示例:
var inputData = [];
for(i=1; i<=5000;i++){
inputData.push('number' + i);
}
var options = {
host: "localhost",
port: 80,
path: "/text.txt",
keepAlive: false,
maxSockets: 999,
maxFreeSockets: 1
}
var limit = inputData.length;
var counter = 0;
function fetchData(number){
return new Promise(function(resolve, reject){
var http = require('http');
fetch = function(resp){
var body = '';
resp.on('data',function(chunk){
body += chunk;
})
resp.on('end',function(){
console.log(resp)
resolve()
})
resp.on('error',function(err){
console.log('error');
})
}
var req = http.request(options, fetch);
req.end();
})
}
Promise.all(inputData.map(number => fetchData(number))).then(function(results) {
console.log('finished');
connection.end();
})
.catch(function(error) {
console.log('there wa an error');
console.log(error);
});
Agent
的选项,而不是http.clientRequest
的选项。如果您不信任文档(或您的实现),请从有限数量的请求和极小值开始设置限制,并使用netstat
监视发生的情况,然后逐渐增加值。 - jcaron