Javascript NodeJS:是否可以从NodeJS服务器向某个api发出1000个http get请求

Javascript NodeJS:是否可以从NodeJS服务器向某个api发出1000个http get请求,javascript,node.js,http,asynchronous,Javascript,Node.js,Http,Asynchronous,我试图对某个web api(abc.com/query?val=somekey)同时执行将近2000多个http get请求。下面是我的代码 async.each(keysArray,function(key,callback1){ sails.http.get({ hostname:'abc.com', path:'/query?val='+key, headers:{ "Accept":"text/html,application/xhtml+xml,

我试图对某个web api(
abc.com/query?val=somekey
)同时执行将近2000多个http get请求。下面是我的代码

async.each(keysArray,function(key,callback1){
  sails.http.get({
    hostname:'abc.com',
    path:'/query?val='+key,
    headers:{
      "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
      "User-Agent":"MYBROWSER"
    }
  },function(response){
    var str='';
    response.on('data',function(chunk){
      str+=chunk;
    });
    response.on('end',function(){
      console.log(new Buffer(str,'utf8'));
    //  some job on each str from each key
    });
  });
});
KeyArray的长度大约是2000。所以上面的代码执行了将近2000个http get请求

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET
    at exports._errnoException (util.js:870:11)
    at TCP.onread (net.js:544:26)
尽管我找到了一种使用
async.eachLimits()
限制并发的方法。
有可能执行如此多的请求吗?或者存在机器或服务器的任何依赖关系。

有关错误的解释,请参阅。我的猜测是,你肯定是在以太快的速度访问web服务器…尝试将http请求限制到一个更合理的数量。这是因为网站限制了你的速率吗?1000西莫看起来很疯狂。@Tennisonh谢谢你的资源。但是在async.parallel()中推送1000个任务会导致相同的错误。因为这个庞大的并行http.get请求@waza007将其缩小…每秒20或50?很有可能ABC.com会因为你敲打他们的服务器而生气,当你试图一次向它发送2000个请求时,它会断开你的连接。@waza007这在一台机器上可能是不可能的。您需要在专业级网络上的几台不同的机器上错开它,才能同时达到2000个请求。有关错误的解释,请参阅。我的猜测是,你肯定是在以太快的速度访问web服务器…尝试将http请求限制到一个更合理的数量。这是因为网站限制了你的速率吗?1000西莫看起来很疯狂。@Tennisonh谢谢你的资源。但是在async.parallel()中推送1000个任务会导致相同的错误。因为这个庞大的并行http.get请求@waza007将其缩小…每秒20或50?很有可能ABC.com会因为你敲打他们的服务器而生气,当你试图一次向它发送2000个请求时,它会断开你的连接。@waza007这在一台机器上可能是不可能的。在一个专业级的网络上,你需要在几个不同的机器上错开它,一次达到2000个请求。