node 版本 6.9.4
node app 运行了一天。没有任何操作。
ps aux | grep node
rss 的大小有明显的增加
比较了 node-heapdump
的工具生产的快照,发现heap 几乎没有增加。
为什么 rss 增加了呢?
另外 process.memoryUsage().rss 输出的rss值和ps
命令看到的值也有几M的差别。
人工置顶。。。
不会,帮你置顶 、、
「有明显的增加」,有多大?是随着时间或者请求数量增加的吗?
@JexCheng 就是运行在那里没有任何操作,100M+ 这样的增加。
@mario56 时长,增量。100M+是最终结果,还是每隔多少小时,就多增加100M?
@JexCheng 时长基本上是一夜,下面前开着的,第二天上班在看的,是最终结果
rss是堆外的内存吧,可能是Buffer这样的不走v8堆内内存分配的数据在不停增大,这种情况下node内存不会爆掉但是确实也是泄漏,我觉得主要可以排查两个地方:
- Buffer的使用
- 如果调用了c/c++扩展,查看其中自行申请内存的地方
<p style=“text-align:right”><a href=“https://github.com/lumia2046/cnode”> — — 来自lumia2046-react-cnode</a></p>
heap如果一直不增加那就没问题,rss可以粗略理解成实际使用中的内存。你开启应用后,发一堆请求预热一下,看看内存升到多少,那个值才有参考价值。
@hyj1991 有使用protobuff ,buffer 都有使用。只不过这些都是要有请求才会做的操作。日志里也没有出现请求。c++ 扩展的话,使用第三方库里面有使用到c++ 比如 canvas吧。
@JexCheng 这种预热的情况,会有一定的增幅,到一定程度就会基本上不增,每次请求增一点,然后会降,但是不会降到初始值。这应该没什么问题吧?
@mario56 参考下 linux ps命令的文档,看下rss具体什么含义就明白了
这种问题就要 @JacksonTian 朴老师啦,alinode