【问题标题】:How to limit CPU and memory usage for node processes如何限制节点进程的 CPU 和内存使用率
【发布时间】:2015-12-11 10:30:03
【问题描述】:

我想install a Ghost Blog on a shared server via GitHub。在安装过程中,我需要运行npm install, grunt initgrunt prod。我的主机提供 500 MB 内存使用,如果一个进程使用超过 600 MB,它会杀死它。

因此我需要一个选项来限制这些进程的内存使用,因为它们都需要超过 500 MB 的内存!

我尝试使用--max-old-space-size=450 运行进程,但它似乎不起作用。

如果有人可以向我提供有关使用选项运行节点进程的教程或文档的链接,我会很高兴。

谢谢!

更新: 自从我发布这篇文章以来,Ghost 的安装已经完全改变了。

【问题讨论】:

  • 如果你的主机操作系统是 linux,你可以使用 cgroups 来限制任何进程的内存使用。
  • cgroups 没有安装,我不允许安装它。不过谢谢!
  • slebetman 你能举个例子说明如何使用 cgroups 来限制进程的内存使用吗?
  • CPU 什么都没有?

标签: node.js npm gruntjs ghost-blog


【解决方案1】:

我使用以下内容,它就像一个魅力

NODE_OPTIONS=--max_old_space_size=50 npm install

【讨论】:

    【解决方案2】:

    从节点 v8+ 开始,输入以下内容:

    node --help
    

    显示 --v8-options 选项。然后输入:

    node --v8-options
    

    给予:

    ...
    --max_old_space_size (max size of the old space (in Mbytes))
        type: int  default: 0
    --initial_old_space_size (initial old space size (in Mbytes))
        type: int  default: 0
    ...
    

    我已经设法像这样使用第一个选项:

    node --max-old-space-size=250 `which npm` install
    

    这里我们告诉 node 将 RAM 使用限制为 250Mo,'which npm' 部分给出当前 npm 路径,'install' 是您要运行的脚本。

    【讨论】:

    • 可能我不再需要了,但出于好奇,假设我有一个带有 package.json 的典型 npm 项目,我想限制start 脚本,我可以导航到应用程序目录并输入node --max-old-space-size=250 npm start
    • @PDXIII 绝对!我目前在执行此命令的项目上有一个自动部署管道,以避免超出有限 Docker 容器允许的最大 RAM 使用量。
    【解决方案3】:

    你就是这样做的。

    你发送一个命令来限制内存的使用。

    npm install --max-old-space-size=400
    

    【讨论】:

    • 感谢您的回答。但正如我在原始帖子中所描述的那样,我已经尝试过了,但它似乎没有用。但无论如何我找到了解决办法。
    • @tomexx 我只是没有。我解决了它。我想在本地搭建的服务器上搭建的项目。
    • @PDXIII Ahh :( 真可惜。
    猜你喜欢
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    相关资源
    最近更新 更多