内存不停增长问题, 请大牛解答
发布于 1年前 作者 xujun52011 1033 次浏览

如题, 用LR不停的压nodejs搭建的服务器, 用的connect加上一些模块(有npm上的, 也有自己写的), 启动内存25M左右, 压十几分钟, 内存使用70M左右, 压24小时到了100M左右, 而且就算停止压, 内存依然无法释放, 如果服务器一直有请求, 那么内存会一直涨下去, 总有一天会爆掉…我要如何分析内存在哪里占用了呢?有没有什么分析工具?

11 回复

不知道 node-inspector 能不能帮上忙

你需要了解一下node的启动参数和v8的垃圾回收机制。然后才是需要分析工具。

我一直都用tick,对后台调试内存和CPU都很好用 https://github.com/sidorares/node-tick

内存涨不是问题,关键是会不会存在泄露

如果一个请求, 带来1字节的增长, 总有一天你的内存会爆掉吧…

启动参数我看看过v8的参数, 具体还请明示

继续压,压到500M停止,如果还没释放基本说明你的程序有泄露

100M大小不够,v8有内存池策略,这个数量级看不出是你的代码有泄露还是被v8保留了

向操作系统申请内存是个高消耗操作

@xujun52011 你内存涨是很正常的,断开连接时把内存删了就OK,内存不够用就去优化代码,或者堆硬件

我跟5楼一样想法。 $node --v8-options 可以查看所有参数,可惜中文文档我不记得在哪了。 $node --trace_gc --trace_gc_nvp app.js 你可以看看压力测试中的gc情况,然后考虑是否代码有泄露。

表示不能理解。我用node做了两个商用线上正在跑的游戏,都是高实时性的。正在做第三个,就从来没遇到过内存泄露的问题。真是奇了怪了

奇怪, node版本从0.10.18->0.10.26之后一点事都没有, 始终保持在60M左右…

回到顶部