我正在 Mac OS X 10.9.5 上本地开发一个 Node.js 应用程序,该应用程序代理对另一台服务器上的大文件的请求。我尝试使用 node-http-proxy 以及简单的 http/request 单行 (req.pipe(request()).pipe(res)) 编写我的应用程序。两者都工作得很好,直到我开始制作例如向我的代理同时发出 30 个大型 (90MB) 文件请求。跟踪后端服务器上的访问日志,我可以看到只有一部分代理请求立即出现。其他的则在几秒钟甚至几分钟后慢慢流出。在某些情况下,稍后的出站请求与一些立即到达的请求的完成相对应,而在其他情况下,我没有看到任何解锁请求的模式。立即发送到后端服务器的请求数量不一致。我尝试将 http.globalAgent.maxSockets 设置为比我的 30 个请求大得多的数字,但这并没有什么区别。关于什么可能会延迟我的出站 HTTP 请求的子集,还有其他想法吗?谢谢!
最佳答案
请注意,(至少)有两个出站 HTTP 套接字池。您已使用 http.globalAgent.maxSockets
为出站 http 连接正确配置了一个,但是,还有另一个用于 https 连接的 https.globalAgent.maxSockets
。
只是作为复习。来自 node docs on the matter :
agent.maxSockets#
By default set to 5. Determines how many concurrent sockets the agent can have open per origin. Origin > is either a 'host:port' or 'host:port:localAddress' combination.
关于node.js - 尽管 maxSockets 高,Nodejs 出站 HTTP 请求还是延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27219844/