20

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.

vlio20
  • 8,955
  • 18
  • 95
  • 180
PDXIII
  • 1,086
  • 2
  • 8
  • 17

4 Answers4

20

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.

vivek_ganesan
  • 658
  • 4
  • 19
Quentin Petel
  • 595
  • 5
  • 18
  • 1
    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```. – PDXIII Jan 28 '18 at 21:17
  • 2
    @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. – Quentin Petel Jan 31 '18 at 00:01
5

I use the following and it works like a charm

NODE_OPTIONS=--max_old_space_size=50 npm install
Megacier
  • 394
  • 4
  • 9
3

This is how you do it.

You send a command to limit the ram usage.

npm install --max-old-space-size=400
Steven McConnon
  • 2,650
  • 2
  • 16
  • 21
  • 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 Dec 14 '16 at 12:23
  • @tomexx I just didn’t. I worked around it. The project I wanted to build on the server I built it locally. – PDXIII Feb 08 '17 at 16:18
  • @PDXIII Ahh :( Thats a pity. – tomexx Feb 09 '17 at 09:33
0

To limit the CPU usage to 80%:

cpulimit -l 80 npm install

install

sudo apt-get install cpulimit # Debian based
# OR
sudo yum install cpulimit.    # REHL based
Ericgit
  • 6,089
  • 2
  • 42
  • 53