【发布时间】:2016-01-11 22:42:24
【问题描述】:
我用 Node 和 Express 编写了一个程序,使用 Request 连接到 API 并下载大量数据(想想 3,000 个 API 请求)(请注意,都在 API 的使用限制范围内)。
在 Docker 容器中运行它时,我收到很多 getaddrinfo ENOTFOUND 错误,我想知道这是否是资源问题。我的要求是这样的:
request.get(url, function(err, resp, body){
// do stuff with the body here,
// like create an object and handball to a worker function
});
对于前几百个请求,这总是可以正常工作,但随后我收到很多 ENOTFOUND 或超时错误,我认为问题可能是我的代码处理所有这些请求的方式。
我已经将它们分批放入一个超时队列中,因此请求发生的速度相对较慢,它有一点帮助,但并不能完全解决问题。
我是否需要销毁正文/响应对象以释放内存或其他东西?
【问题讨论】:
-
澄清:您是否立即发送所有请求?您是否考虑过限制并发请求的数量(例如使用异步)
-
您很可能会遇到您调用的 API 的配置问题
-
@h0ru5 我做了类似的事情,我创建了一个队列数组和一个循环遍历它的脚本,每 5 秒执行 25 次调用。
-
你确定你没有达到 api 限制吗?这通常是由于目标网络限制您或过载,或者您的服务器/本地网络过载。在 25/5 秒时,这可能不是网络问题,更有可能是限制。
-
@MikeDinescu 可能,但请参阅上面的评论。
标签: javascript node.js node-request