Web crawler loop с лимитом 1000 параллельных https запросов обрабатывает только от 100 до 200 запросов в течение минуты
Я пишу веб-Искатель в узле js с модулем запроса и redis в качестве кэша url-адресов.
То, что я пытаюсь сделать, - это постоянно обходной цикл (бесконечно), который получает url-адрес от redis и делает запрос https.
Я попытался добавить ограничение запросов paralell. Например, 10 параллельных запросов.
Я не знаю почему, но независимо от того, выбираю ли я 10 или 1000, результат всегда один и тот же.
В течение одной минуты обрабатывается только от 100 до 200 запросов.
Пожалуйста, дайте мне подсказку, где я делаю что-то не так. Я хотел бы обрабатывать 60 000 запросов (URL) в минуту, но даже если я выберу 10k параллельных запросов в качестве ограничения, он будет обрабатывать только от 100 до 200 запросов в течение минуты.
Мой код, как показано ниже:
гусеничная петля:
var limit = 1000; // parallel requests limit var running = 0; function loop() { while(running < limit) { req(function(){ running--; loop(); }); running++; } } loop(); // and the req function to make the https requests to the urls given by 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(); }); } }); }
Что я уже пробовал:
Я пытался играть с setTimeout и запускать больше параллельных запросов, но даже это не сработало, что бы я ни пробовал, я никогда не получал больше 200 запросов, обрабатываемых в минуту. Не могу поверить, что это предел, на который способен узел js.
Richard MacCutchan
- Капитан, я не могу изменить законы физики.
Gerry Schmitz
.. И все интернет - провайдеры одинаковы. И все веб-сайты. И все звенья. И все страницы.
ZurdoDev
Скорее всего, это предел того, что им управляет.
NodejsToGo
Я работаю на ubuntu с облачным сервером Ionos. Я действительно понятия не имею, что ограничивает мои запросы, не так ли ? Узел js может легко выполнять 1000k запросов в секунду в обычном режиме.
Dave Kreskowiak
Узел js может легко выполнять 1000k запросов в секунду в обычном режиме.
Да, если бы вы писали серверное приложение, которое принимает входящие запросы.
Исходящие запросы на такое количество серверов-не так уж и много.