Start Ghost through NPM and it will eat up your memory
Somewhat recently I reduced the size of the virtual machine in which I host this blog. It is quite short on memory, but for the price I pay, can’t really complain.
Just now I was looking on memory usage on the machine, and noticed ps reporting over 100MB being help by npm:
andre@webserver ~]$ ps aux --sort -rss USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ghost 247 0.0 23.2 1328872 117468 ? Sl Jun06 2:58 node index.js ghost 199 0.0 7.5 1031804 37868 ? Ssl Jun06 0:00 npm root 152 0.0 3.5 77340 17868 ? Ss Jun06 0:08 systemd-journald
As you can see, only about 38 MB is actually in RAM (RSS), the rest (VSZ) is either shared libs or in the swap. As you can see by the relative memory usage, I don’t have that much, so why not free those forty megabytes that are not really necessary?
I was starting Ghost by calling
npm start --production, which simply calls node on the index.js file. Easy enough to update my systemd service file:
--- a/ghost.service +++ b/ghost.service @@ -5,7 +5,8 @@ After=network.target [Service] WorkingDirectory=/var/www/ghost Environment=GHOST_NODE_VERSION_CHECK=false -ExecStart=/usr/bin/npm start --production +Environment=NODE_ENV=production +ExecStart=/usr/bin/node /var/www/ghost/index.js User=ghost Restart=always RestartSec=10