Исходящие HTTP-запросы Nodejs задерживаются, несмотря на высокие maxSockets

Я разрабатываю приложение node.js локально в Mac OS X 10.9.5, которое передает запросы на большие файлы на другом сервере. Я попытался написать свое приложение, используя node-http-proxy, а также простой однострочный http / request (req.pipe(request()). Pipe(res)). Оба работают нормально, пока я не начну делать, например, 30 одновременных запросов к моему прокси для файла большого размера (90 МБ). Записываясь в журнал доступа на бэкэнд-сервере, я вижу, что сразу появляется только часть моих прокси-запросов. Остальные сочатся через много секунд, а иногда и минут спустя. В некоторых случаях более поздние исходящие запросы соответствуют завершению некоторых из запросов, которые поступили немедленно, а в других случаях я не вижу шаблонов в отношении того, что разблокирует запросы. Количество запросов, которые сразу поступают на внутренний сервер, является непоследовательным. Я попытался установить http.globalAgent.maxSockets на число, намного превышающее мои 30 запросов, но это не имеет значения. Любые другие идеи относительно того, что может задерживать подмножество моих исходящих HTTP-запросов? Спасибо!

1 ответ

Решение

Обратите внимание, что есть (как минимум) два исходящих пула сокетов HTTP. Вы правильно настроили один для исходящих http-подключений, используя, http.globalAgent.maxSocketsТем не менее, есть еще один для соединений https, https.globalAgent.maxSockets,

И как освежитель. Из документа узла по этому вопросу:

agent.maxSockets #

По умолчанию установлено значение 5. Определяет, сколько одновременных сокетов агент может открыть для каждого источника. Origin > - это комбинация "хост: порт" или "хост: порт: локальный адрес".

Другие вопросы по тегам