答案 0 :(得分:18)
请求没有连接池。但是,http module(请求使用)会执行:
在节点0.5.3+中,有一个新的HTTP代理实现,用于汇集HTTP客户端请求中使用的套接字。
默认情况下,每台主机最多只能有5个并发连接。当前代理实现有an issue,当您尝试打开太多连接时会导致挂起错误。
你可以:
http.globalAgent.maxSockets
。{pool: false}
传递给请求。首先拥有HTTP代理有几个原因:
maxSockets
实际上取决于您要定位的主机。如果其他主机处理它,node.js将非常乐意打开1000个并发连接。代理的行为在node.js doc中解释:
当前的HTTP代理还默认客户端请求使用Connection:keep-alive。如果没有挂起的HTTP请求正在等待套接字变为空闲,则套接字将关闭。这意味着节点的池在加载时具有保持活动的优点,但仍然不需要开发人员使用keep-alive手动关闭HTTP客户端。
node.js的异步架构使打开新连接变得非常便宜。