веб-сканер l oop с лимитом 1000 параллельных запросов https обрабатывает от 100 до 200 запросов в течение минуты - PullRequest
0 голосов
/ 03 мая 2020

Я пишу веб-сканер в Node js с модулем запроса и redis в качестве URL-кеша.
То, что я пытаюсь выполнить sh - это постоянно сканирующий l oop (бесконечно), который получает URL от Redis и делает запрос https.

Я попытался добавить ограничение запросов паралелей. Например, 10 параллельных запросов.
Я не знаю почему, но независимо от того, выберу я 10 или 1000, результат всегда одинаков.
В течение одной минуты обрабатывается только от 100 до 200 запросов.

Пожалуйста, дайте мне подсказку, где я делаю неправильно. Я хотел бы обрабатывать 60 000 запросов (URL) в минуту, но даже если я выберу 10 000 параллельных запросов в качестве ограничения, он будет обрабатывать только от 100 до 200 запросов в минуту.

Мой код, как показано ниже:

гусеничный l oop:

var limit   = 1000;       // parallel requests limit
var running = 0;  

function loop() {
  while(running < limit) {
    req(function(){
      running--;
      loop();
    });  
    running++;
  }
}
loop();

и функция req для создания https запросы на URL, заданные redis:

  function req (callback){ 
    client.select(2);
    client.RANDOMKEY([], function (err, result) {
    var url = result;
    client.del(url);

    if(err) { 
      return  callback();
    }
    else if (url == null || url == "" ) {
      return  callback();
    } 
    else {
      request(url,function(error, response, body){
        return callback();
      });
    } 
  });
}

1 Ответ

0 голосов
/ 04 мая 2020

У кого-нибудь есть ответ на мою проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...