2014-12-01 4 views
1

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

ответ

0

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

И как переподготовка. Из node docs on the matter:

agent.maxSockets #

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

+0

Это была определенно часть моей проблемы. Установка https.globalAgent.maxSockets или передача {url: '', пул: {maxSockets: Infinity}}, чтобы запросить() решить проблему, а также натолкнуть потоки на серверный сервер (whoops). Спасибо @ctt! – Robin