如何限制nodejs中最大rss内存大小?

N.X*_*.Xu 6 memory limit node.js

我们在云服务器上运行了一个 Nodejs 服务,只给它 512MB RAM(对于应用程序来说绰绰有余)。

服务器的内存使用量缓慢增长。当读取到512MB内存限制时,服务器会自动重新启动。

我尝试通过大量负载测试来读取内存使用统计信息,该数字显示缓慢增长rss memory usage,但非常稳定低heap memory usage

我尝试过--max_old_space_size,但这只会限制堆大小,这对我来说从来都不是问题。堆大小读取始终低于 50MB。

有办法限制rss memory size吗?


  1. rss一些快速研究表明和之间的区别heap是 C++ 代码的缓冲区大小。不确定是否可以调试它们(gdb?)。

  2. 有人说 v8 有 1.4GB 的限制,这也是堆大小限制吗?如果是rss限制,也许我可以修改nodejs源代码,构建一个限制更小的特殊版本?

  3. --expose-gc经常尝试清理GC,但同样,这只有助于堆使用(并减慢它的速度)。


更新:找到了原因,RSS 使用量不断增长是由于我们使用的库之一的 C++ 内存泄漏(谢谢bignum)。避免使用它可以保持 rss 内存稳定。