【问题标题】:Nodejs Error: getaddrinfo ENOTFOUND & EADDRINFONodejs 错误:getaddrinfo ENOTFOUND & EADDRINFO
【发布时间】:2016-07-08 18:55:51
【问题描述】:

我正在使用 Request 模块来获取 html 页面,它工作得很好,但一段时间后我在某些请求上收到错误 ENOTFOUNDEADDRINFO。在网上环顾四周后,我发现了一些类似的问题(#699#5488#697),我从中了解到,我可能没有消费一些(或全部?)的回复,而且在某些时候应用程序达到套接字池的最大大小。

我不太确定这一切,但我正在考虑增加 globalAgent.maxSockets(增加到 100?)并始终通过在请求回调开始时调用 response.resume() 来消耗响应。这有什么意义吗?还是我偏离了轨道?

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

感谢您的帮助。

【问题讨论】:

  • 你能描述一下你运行它的环境吗?您是否在本地环境中看到与 AWS、Heroku 等相同的症状?
  • 我不记得在开发环境中看到过这个问题。产品环境在 AWS 上,节点为 0.10.21
  • @jc-tzn 你找到解决方案了吗?我也有类似的问题。
  • 我按照我说的去做了,我会尽力解决这个问题(虽然不太清楚为什么)。所以在初始化服务器之前,我设置了http.globalAgent.maxSockets = 100https.globalAgent.maxSockets = 100,每次我使用request 模块时,我都会在回调中添加:if (response) { response.resume(); }
  • @jc-tzn 您应该将您的解决方案添加为答案并将其选为正确,这样搜索类似问题的人就会知道它已在搜索结果中得到解决。

标签: node.js sockets request


【解决方案1】:

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

我按照我说的去做了,我会尽力解决这个问题(虽然不太清楚为什么)。所以在初始化服务器之前,我设置了http.globalAgent.maxSockets = 100https.globalAgent.maxSockets = 100,每次使用请求模块时,我都会在回调中添加:if (response) { response.resume(); }

也许这会帮助别人:)

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 2016-04-20
    • 1970-01-01
    • 2016-07-03
    • 2017-10-16
    • 2018-03-03
    • 2014-10-20
    • 2018-01-31
    • 2021-07-18
    相关资源
    最近更新 更多