我们在云服务器上运行了一个nodejs服务,只给它512MB RAM(对应用程序来说已经足够了)。
服务器的内存使用量增长缓慢。当读取512MB内存限制时,服务器会自动重启。
我已尝试通过大量负载测试来读取内存使用情况统计信息,但数字显示缓慢增长的rss memory usage
,但非常稳定的低heap memory usage
。
我尝试了--max_old_space_size
,但这只限制了堆大小,这对我来说永远不是问题。堆大小读数始终低于50MB。
有没有办法限制rss memory size
?
一些快速研究表明,rss
和heap
之间的差异来自c ++代码的缓冲区大小。不确定是否可以调试那些(gdb?)。
有人说v8的限制为1.4GB,那也是堆大小限制吗?如果它有限制,也许我可以修改nodejs源代码,构建一个限制较小的特殊版本?
我已经尝试了--expose-gc
并经常清理gc,但同样,只能帮助堆使用(并减慢速度)。
更新:找到原因,增加rss的使用是由于我们使用的其中一个库的c ++内存泄漏(感谢bignum
)。避免使用它保持rss内存稳定。