Javascript NodeJS:我需要结束HTTP请求以节省内存/CPU吗?

Javascript NodeJS:我需要结束HTTP请求以节省内存/CPU吗?,javascript,node.js,node-request,Javascript,Node.js,Node Request,我在Node和Express中编写了一个程序,用于连接到API并下载一组数据(想想3000个API请求)(请注意,所有这些都在API的使用范围内) 在Docker容器中运行此程序时,我会收到很多getaddrinfo ENOTFOUND错误,我想知道这是否是一个资源问题。我的要求如下: request.get(url, function(err, resp, body){ // do stuff with the body here, // like create an object

我在Node和Express中编写了一个程序,用于连接到API并下载一组数据(想想3000个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
或超时错误,我认为问题可能是我的代码处理所有这些请求的方式

我将它们分批放入一个超时队列中,因此请求发生的速度相对较慢,这有一点帮助,但不能完全解决问题


我是否需要销毁body/response对象以释放内存或其他什么?

我在使用的API中遇到了类似的问题,结果就是这里的一些人建议的速率限制。有些API不会返回速率限制上的可读错误,因为它们为每个客户端提供一定数量的资源,当您用完所有资源时,它们甚至不能向您发送错误响应

尽管我每天都在公布的费率限制内,但事实证明他们每分钟都有一个不成文的限制(或者更像是——无法处理这么多请求)

我用自己的代码模拟了这个API,将它放在网络中,这样可以最大限度地提高相似性。由于我的模拟代码没有做任何事情,我在NodeJS服务器中从未遇到任何错误

然后我在需要的时候给它倒计时和超时


我建议你也这样做。记住,他们有每小时的限制,但这并不意味着他们没有不同的每秒/分钟限制。

澄清一下:您是否立即发送所有请求?您是否考虑限制并发请求的数量(例如异步),您最有可能使用API来处理配置问题吗?calling@h0ru5我做了类似的事情,我创建了一个队列数组和一个循环脚本,每5秒进行25次调用。你绝对确定没有达到api限制吗?这通常是由于目标网络限制或过载,或者服务器/本地网络过载。在25/5秒时,这可能不是网络问题,更可能是限制性的。@MikeDinescu可能,但请参见上面的评论。