How to limit CPU and memory usage for node processes

22,906

Solution 1

From node v8+, typing the following:

node --help

show a --v8-options option. Then typing:

node --v8-options

gives:

...
--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
...

I have managed to use the first option like this:

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

Here we told node to limit RAM usage to 250Mo, the 'which npm' part gives the current npm path and 'install' is the script you want to run.

Solution 2

I use the following and it works like a charm

NODE_OPTIONS=--max_old_space_size=50 npm install

Solution 3

This is how you do it.

You send a command to limit the ram usage.

npm install --max-old-space-size=400
Share:
22,906
PDXIII
Author by

PDXIII

Hello World! PDXIII is an interface designer from Berlin. You can find out more here.

Updated on July 09, 2022

Comments

  • PDXIII
    PDXIII almost 2 years

    I would like to install a Ghost Blog on a shared server via GitHub. During the installation, I need to run npm install, grunt init and grunt prod. My host provides 500 MB memory usage, if a process uses more than 600 MB it kills it.

    Therefore I need an option to limit the memory usage of these processes because they all need more than 500 MB of memory!

    I tried to run the processes with --max-old-space-size=450 but it does not seem to work.

    I would be glad if anyone could provide me a link to a tutorial or documentation about running node processes with options.

    Thank you!

    UPDATE: Since I’ve posted this the installation of Ghost has changed completely.

  • PDXIII
    PDXIII over 7 years
    Thank you for your answer. But as I described in my original post, I’ve tried that and it did not seem to work. But anyway I found a work around.
  • PDXIII
    PDXIII over 7 years
    @tomexx I just didn’t. I worked around it. The project I wanted to build on the server I built it locally.
  • tomexx
    tomexx over 7 years
    @PDXIII Ahh :( Thats a pity.
  • PDXIII
    PDXIII over 6 years
    Probably I don’t need is anymore, but out of curiosity let’s say I have a typical npm project with a package.json and I want to limit the CPU usage of the start script, I can navigate to the app directory and type node --max-old-space-size=250 npm start.
  • Quentin Petel
    Quentin Petel over 6 years
    @PDXIII Absolutly ! I currently have an automated deployment pipeline on a project that execute this command to avoid exceeding the maximum RAM usage amount allowed by a limited Docker container.