Why web server such as Apache HTTP server and Nginx is needed:
Putting nginx in front of a node.js http server isn't a bad idea; generally you'd want this for two reasons:
SSL/TLS termination. You really don't want to bother with TLS within node; much better to handle that at a front-end proxy
Buffering. Proxies like nginx (or haproxy) buffer can configurably buffer connections in ways that you don't want to have to deal with in your node application; they allow you to allow a specific number of simultaneous connections and "hold" other connections until available, so you don't crush your app (or things which your app may depend on, such as a database). They are also generally tuned to better handle things like slow clients, so they aren't tying up your node app.
A lot of this assumes any significant amount of traffic though; if you're going to be serving a small amount (say, thousands per minute) you are unlikely to see much benefit except when talking about SSL/TLS termination. If you need that, just put an nginx in front of it.
Ubuntu commands:
free -h
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
/etc/apache2
sudo systemctl start apache2
sudo systemctl start tomcat.service
Check for background processes : ps -U ubuntu -au
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
How to tell if your PC is hacked
https://www.youtube.com/watch?v=aJ37b2-OhH8
https://www.youtube.com/watch?v=dykc9YC9Z6U