【发布时间】:2016-07-08 18:55:51
【问题描述】:
我正在使用 Request 模块来获取 html 页面,它工作得很好,但一段时间后我在某些请求上收到错误 ENOTFOUND 和 EADDRINFO。在网上环顾四周后,我发现了一些类似的问题(#699、#5488、#697),我从中了解到,我可能没有消费一些(或全部?)的回复,而且在某些时候应用程序达到套接字池的最大大小。
我不太确定这一切,但我正在考虑增加 globalAgent.maxSockets(增加到 100?)并始终通过在请求回调开始时调用 response.resume() 来消耗响应。这有什么意义吗?还是我偏离了轨道?
我查看了 Node 的代码以试图了解 resume() 的作用,但我不确定是否找到了正确的函数 (#L698)。
感谢您的帮助。
【问题讨论】:
-
你能描述一下你运行它的环境吗?您是否在本地环境中看到与 AWS、Heroku 等相同的症状?
-
我不记得在开发环境中看到过这个问题。产品环境在 AWS 上,节点为 0.10.21
-
@jc-tzn 你找到解决方案了吗?我也有类似的问题。
-
我按照我说的去做了,我会尽力解决这个问题(虽然不太清楚为什么)。所以在初始化服务器之前,我设置了
http.globalAgent.maxSockets = 100和https.globalAgent.maxSockets = 100,每次我使用request模块时,我都会在回调中添加:if (response) { response.resume(); } -
@jc-tzn 您应该将您的解决方案添加为答案并将其选为正确,这样搜索类似问题的人就会知道它已在搜索结果中得到解决。