Node.js内存问题
Node.js Memory Issues
我对Node非常缺乏经验,所以这可能是一个简单的问题。我运行一个node.js服务器持有独特的亚马逊优惠券。在高峰时期,我将看到数百个请求/秒所有请求的优惠券,我已经存储在一个全局对象。通常在一个对象中存储数千张优惠券。它存储在内存中,由IBM的Bluemix托管。
global.coupons['product1'] = ['coupon1', 'coupon2', 'coupon3'];
我已经运行这个服务器几个月了,随着我的请求增加,我增加了分配给.js服务器的内存(现在最多3 GB)。
最近服务器正在丢失存储在内存中的所有信息,当发送优惠券请求时,它为我的用户返回错误。擦除内存前的最后一个日志是:
Detected 1024 MB available memory, 512 MB limit per process (WEB_MEMORY)
为什么要擦除内存?这种情况会发生在流量远低于高峰的时候,所以我真的不确定原因。
提前感谢。
我会尝试像MongoDB或sequelize这样的东西,它不会同时将所有优惠券加载到内存中,但速度会慢一点。如果这成为一个问题,我会研究负载平衡和Node.js集群模块。
听起来,您解释的错误是应用程序中更深层次问题的结果。
更详细地说,由于这个问题发生在远离请求峰值的地方,它看起来像是内存泄漏。你的应用程序似乎消耗了越来越多的内存,却没有把它还给垃圾回收。一旦达到内存消耗限制,应用程序就会死亡。
我建议使用apache benchmark或httperf等工具分析应用程序的任何端点,并分析内存持续增加的地方。
一旦找到这样的端点,检查以下项目并消除它们。
- 回调和闭包
- 您定义的类的泄漏构造函数
- 集合对象,如数组和hashmap 上游代码
在一篇过去帮助过我的文章中找到的
相关文章:
- HTML5 FileReader API内存问题
- Adobe空气-内存问题
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- 递归承诺调用 - 内存范围变量问题
- 页面刷新后javascript内存泄漏有问题吗?为什么?
- javascript内存问题
- Javascript处理v8引擎的内存泄漏问题
- 来自 NodeJS 脚本的注释是否有可能产生内存问题
- 重复使用时,nsiTimer 会导致溢出或内存问题吗?
- 事件侦听器的有趣内存问题
- 映像预加载和内存问题
- $(myObject) 内存与 myObject 内存 - 问题
- JavaScript + CSS3 动画的内存问题.如何改进
- 全局变量 VS Web 应用中的本地存储和内存问题
- 保留对dom节点的引用:内存问题
- IE浏览器内存问题
- express文件上传内存问题
- GWT内存问题
- 用javascript(服务器端)将大型CSV文件转换为JSON数组:处理内存不足问题
- JavaScript setTimeout内存问题