【问题标题】:How to limit usage of virtual memory by node.js?node.js 如何限制虚拟内存的使用?
【发布时间】:2014-07-29 16:06:35
【问题描述】:

我在资源非常有限的嵌入式环境中工作。我们正在尝试使用 node.js,它运行良好,但通常会消耗大约 60 兆字节的虚拟内存(实际使用的内存大约是 5 兆字节。)鉴于我们的限制,这是太多的虚拟内存;我们最多只能允许 node.js 使用大约 30 兆字节的 VM。

node.js 有几个命令行选项,例如“--max_old_space_size”, “--max_executable_size”和“--max_new_space_size”,但经过实验,我发现这些都是控制实际内存使用量,而不是最大虚拟内存大小。

如果重要的话,我正在使用 ARM 架构上的 ubuntu linux 变体。

是否有任何选项或设置允许设置 node.js 进程允许使用的最大虚拟内存量?

【问题讨论】:

  • 为什么会有问题? Linux 使用过度分配:此虚拟内存将仅作为进程页表中的条目存在,直到它真正被使用。
  • 嗯。我不确定。这是一个嵌入式环境(意思是:没有磁盘空间)所以不是所有的虚拟分配都会占用一些实际内存吗?我会向我的老板提出这个想法,但我觉得这不会有任何影响;我被命令减少足迹,并认为我不应该这样做不会带来太大的重量。 “客户永远是对的”之类的东西。此外,我遇到了另一个问题;我使用 setrlimit() 编写了一个函数来将虚拟内存使用限制在 55 兆以下,现在 node.js 退出并出现 malloc 错误。有什么建议吗?
  • 嗨,迈克。你是怎么解决这个问题的?

标签: node.js embedded virtual-memory limiting


【解决方案1】:

您可以使用softlimit 来执行大小有限的节点。或者你可以直接使用 Linux 的setrlimit,但不太清楚如何从 NodeJS 调用它,见this SO question

【讨论】:

  • 谢谢。我确实找到了 setrlimit(),用它为 node.js 编写了一个插件,它确实可以工作 - 但现在我从 node.js 收到一条错误消息,指出 malloc() 失败,因为它无法分配尽可能多的内存( 55 兆)随心所欲。这似乎是一种处理内存不足的非常不雅的方式。所以现在我想弄清楚我是否可以重建 node.js 并留下一些东西来减少内存占用。有什么想法吗?
猜你喜欢
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 2012-09-28
  • 1970-01-01
  • 2015-12-16
  • 2020-04-07
相关资源
最近更新 更多