【问题标题】:Nodejs outbound HTTP requests delayed despite high maxSockets尽管 maxSockets 很高,Nodejs 出站 HTTP 请求仍会延迟
【发布时间】:2014-12-01 00:04:53
【问题描述】:

我正在 Mac OS X 10.9.5 上本地开发 node.js 应用程序,该应用程序代理对另一台服务器上的大文件的请求。我尝试使用 node-http-proxy 以及简单的 http/request one-liner (req.pipe(request()).pipe(res)) 编写我的应用程序。在我开始制作之前,两者都可以正常工作。向我的代理发送 30 个同时请求的大型(90MB)文件。跟踪后端服务器上的访问日志,我可以看到我的代理请求中只有一部分立即出现。其他的会在几秒钟内滴流,有时在几分钟后。在某些情况下,后来的出站请求与立即到达的一些请求的完成相对应,而在其他情况下,就解除阻塞请求而言,我看不到任何模式。立即发送到后端服务器的请求数不一致。我尝试将 http.globalAgent.maxSockets 设置为比我的 30 个请求大得多的数字,但这并没有什么不同。关于什么可能会延迟我的出站 HTTP 请求的子集的任何其他想法?谢谢!

【问题讨论】:

    标签: node.js proxy node-http-proxy


    【解决方案1】:

    请注意,有(至少)两个出站 HTTP 套接字池。您已使用http.globalAgent.maxSockets 为出站http 连接正确配置了一个,但是,还有另一个用于https 连接https.globalAgent.maxSockets

    作为复习。来自node docs on the matter

    agent.maxSockets#

    默认设置为 5。确定代理可以打开每个源的并发套接字数。 Origin > 是 'host:port' 或 'host:port:localAddress' 组合。

    【讨论】:

    • 这绝对是我的问题的一部分。设置 https.globalAgent.maxSockets 或将 {url: '', pool: {maxSockets: Infinity}} 传递给 request() 解决了这个问题,同时增加了后端服务器上的线程(哎呀)。谢谢@ctt!
    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2021-10-30
    • 2014-10-19
    • 1970-01-01
    相关资源
    最近更新 更多