我需要增加我正在编写的模块可用的出站 http 套接字的数量。我知道可以使用以下方法在全球范围内执行此操作:
// increase max sockets
http.globalAgent.maxSockets = 1000;
在不影响其他模块的情况下创作模块的 maxSocket 限制的最佳模式是什么?
您最好的选择是将代理对象传递给您正在发出的每个 http 和 https 请求,并根据您的喜好配置 maxSockets。这对其他模块没有影响。请参阅http://nodejs.org/docs/latest/api/http.html#http_http_request_options_callback。
如果您自己使用框架,而不是直接依赖 http 模块,这可能会很困难并且需要一些补丁。
鉴于该设置决定了每个主机有多少并发连接可用,因此无法专门为各个模块设置此设置。但是,您应该做的是确保您没有减少用户已经指定的并发连接数。例如,如果有人将他们的 maxSockets 设置为 5000,而您在模块中将其设置为 1000,则可能会发生不好的事情。我会推荐类似以下的东西
var max = 1000;
if(http.globalAgent.maxSockets < max) {
http.globalAgent.maxSockets = max;
}