Я пишу веб-сканер в 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();
});
}
});
}