发送千dns请求并保存到csv - 性能

时间:2017-05-07 17:30:38

标签: node.js performance

我在发送大量域名以检查它们是否存在时遇到问题。我使用节点本机dns并检入MX记录。

我有60k域名的数组我发送这个功能检查重复值并返回唯一域,然后我循环每个值并发送到函数:验证域是否有效,发送DNS请求,检查MX接收的内容和返回正确的值,然后我将其保存到csv文件。不幸的是,只保存1,2到1,5k个域名而不是更多。我没有收到任何错误,只是停止保存。也许有人知道我做错了什么。

ev1.checkdomains(csvdomains, MXtocheck, function(uniquedata) {

var wstream = fs.createWriteStream(path);
for(i = 0; i < uniquedata.length; i++){

  var tmpdomian = uniquedata[i].toString();
  ev.searchMX(tmpdomian, arrMX, function(valid, domain, comment){

    if(valid){
          wstream.write(domain + ',' + comment + '\n');
         }

  });

}

另外我认为重要的是要注意,如果使用我不想要的MX服务器来加工阵列,我会检查返回的MX,这是非常有效的,因为我使用双循环,meaby这就是原因,但我不知道如何做得更好。

dns.resolve(domain, 'MX', function(err, addresses) {    
  valid = false;
  if (err) {
   valid = false;
   comment = 'MX record not exist';   
  } 
  else if (addresses && addresses.length > 0) { 

  var tmp_comment = '';
  for(var i = 0; i < addresses.length; i++){
      for(var j = 0; j < arrMX.length; j++){
          if(addresses[i].exchange == arrMX[j]){
            valid = false;
            comment = 'is in wrong MX records ' + addresses[i].exchange;
            cb(valid, email, comment);
            return;
          }
      }
      tmp_comment += ' ' + addresses[i].exchange;
  }
   if(!valid){
     valid = true;
     comment = tmp_comment;
   }
  }
  else {
   valid = false;
   comment = 'error not specify'
  }
  cb(valid, email, comment);    
});

感谢一百万人提供任何帮助来改进此代码,或者弄清楚出了什么问题。

0 个答案:

没有答案