Ответ 1
Что касается TypeError
, который вы получаете, я не получаю никаких ошибок при настройке http.globalAgent.maxSockets
или https.globalAgent.maxSockets
. Там что-то еще происходит в вашем приложении.
Что касается первой части вашего вопроса, поймите, что вы не просто ограничены использованием глобального агента. Вы можете создать свои собственные экземпляры Agent
и использовать их для выполнения запросов:
var http = require('http');
var myAgent = new http.Agent();
http.request({ ... , agent: myAgent }, ...);
Запросы, сделанные с использованием настраиваемых агентов, вообще не взаимодействуют с глобальным агентом. Глобальный агент является стандартным по умолчанию, который используется, если вы явно не укажете один или не отключите использование агентов вместе (передав false
в качестве значения Agent
в параметрах запроса).
Итак, когда docs говорят agent.maxSockets
, они действительно ссылаются на общий Agent
класс; каждый экземпляр имеет это свойство, включая глобальный (по умолчанию) агент – к которому вы должны получить доступ через http.globalAgent
.
Вторая часть вашего вопроса (оптимальная maxSockets
) - трудная задача ответить. Помните, что многие серверы будут ограничивать количество одновременных подключений от данного IP-адреса, и вы хотите удостовериться, что вы не подавляете сервер с большим количеством одновременных запросов. (С достаточным количеством запросов, которые вы запускаете сразу, вы эссенциально ДОЗИРУЙТЕ сервер.)