NodeJS:我需要结束HTTP请求来节省内存/CPU吗
NodeJS: Do I need to end HTTP requests to save memory/CPU?
我在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
或超时错误,我认为问题可能是我的代码处理所有这些请求的方式。
我已经将它们分批放入一个超时的队列中,所以请求发生的速度相对较慢,这有点帮助,但并不能完全解决问题。
我需要销毁主体/响应对象以释放内存或其他什么吗?
我在使用API时遇到过类似的问题,最终达到了这里的一些建议——速率限制。有些API在速率限制下不会返回可读错误,因为它们为每个客户端提供了一定数量的资源,当你用完所有资源时,它们甚至不会向你发送错误的响应。
尽管我每天都保持在公布的费率限制范围内,但事实证明,他们每分钟都有一个不成文的限制(或者更像是——无法处理这么多请求)。
不过,我的回答是用我自己的代码嘲笑API,把它放在网络中,这样它就可以最大限度地提高相似性。由于我嘲笑的代码什么都没做,我在NodeJS服务器上从来没有出现过任何错误。
然后我在需要的时候倒计时和暂停。
我建议你也这样做。记住,他们有每小时的限制,并不意味着他们没有不同的每秒/分钟限制。
相关文章:
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 重复应用 d3 转换导致的内存泄漏
- 如何显示在给定极限内存在的所有素数
- IE7中的blockUI插件内存泄漏25kb
- Javascript闭包-如何防止内存泄漏
- 基于订阅的nosql内存数据库
- 显示:阻止/无html元素,css.not从内存中释放
- jQuery Draggable:内存泄漏
- 元素过多的HTML内存使用情况
- 如何使用Javascript在FireFox中将html从内存动态加载到iframe中
- "检测到可能的EventEmitter内存泄漏”;使用Gulp+Watchify+Factor捆绑包
- Javascript图像数组预加载速度和从内存中删除
- 在Dojo类中递归调用setTimeout时是否存在内存泄漏
- VBA加载网页并提取内存中的数据
- 是内存泄漏
- JSON解码和编码可节省内存
- 如何在不在“视图中”时卸载图像以节省内存
- NodeJS:我需要结束HTTP请求来节省内存/CPU吗
- 可以减少Javascript关联数组中的索引长度可以节省内存
- Javascript继承,同时节省内存