Nodejs Error: getaddrinfo ENOTFOUND & EADDRINFO

4
我正在使用Request模块来获取html页面,它工作得很好,但是一段时间后我会遇到一些请求出现ENOTFOUNDEADDRINFO的错误。在网上找到了一些类似的问题(#699#5488#697),据我所知,我可能没有消耗一些(或全部)响应,并且在某个时刻应用程序达到了套接字池最大大小。

我不太确定所有这些,但我考虑增加globalAgent.maxSockets(到100?),并始终通过调用response.resume()在请求回调函数的开头消耗响应。这些话有道理吗?还是我完全偏离了轨道?

我查看了Node的代码,试图理解resume()的作用,但我不确定我是否找到了正确的功能(#L698)。

感谢您的帮助。


你能描述一下你正在运行的环境吗?在本地环境和AWS、Heroku等上,你是否看到了相同的症状? - aembke
我不记得在开发环境中看到过那个问题。生产环境在AWS上,使用Node 0.10.21。 - jc-tzn
@jc-tzn,你找到解决方案了吗?我也遇到了类似的问题。 - Ace
我做了我说过的尝试,解决了这个问题(虽然不太确定为什么)。因此,在初始化服务器之前,我设置了 http.globalAgent.maxSockets = 100https.globalAgent.maxSockets = 100,并且每次使用 request 模块时,我都会在回调函数中添加以下内容:if (response) { response.resume(); } - jc-tzn
@jc-tzn,你应该将你的解决方案添加为答案,并选择它作为正确答案,这样搜索类似问题的人就会知道在搜索结果中已经解决了。 - kanaka
1个回答

0

根据kanaka的建议,我用我找到的解决方案回答了自己的问题:

我做了我说过的尝试,解决了这个问题(不太确定为什么)。所以在初始化服务器之前,我设置了http.globalAgent.maxSockets = 100https.globalAgent.maxSockets = 100,每次使用请求模块时,在回调中添加以下内容:if (response) { response.resume(); }

也许这会帮助其他人 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接