Advanced Node.js Interview QuestionsAdvancedConcept
Node.js · Question 77
What is PM2 and how is it used with Node.js?
Direct answer
PM2 is a production process manager — cluster mode, auto-restart on crash, log aggregation, startup scripts on boot, zero-downtime reload; alternative to systemd + Docker for bare-metal Node deploys.
PM2 wraps process supervision — keep Node alive, restart OOM kills, fork workers across cores — common on VPS before full container orchestration.
| Command | Purpose |
|---|---|
| pm2 start app.mjs -i max | Cluster mode — one worker per CPU |
| pm2 reload api | Zero-downtime reload (graceful) |
| pm2 logs / monit | Tail logs, CPU/memory dashboard |
| pm2 startup + save | Resurrect processes after reboot |
| ecosystem.config.cjs | Declarative multi-app config |
- vs Docker — AceDevHub target is Docker Compose on Hetzner; PM2 still asked in legacy VPS interviews.
- Graceful reload — PM2 sends shutdown signal before killing old workers (Q73).
- Log rotation — pm2-logrotate module; prefer stdout → Docker logging driver in containers.
ecosystem.config.cjs
module.exports = {
apps: [
{
name: "acedevhub-api",
script: "./apps/api/dist/server.mjs",
instances: "max",
exec_mode: "cluster",
env: { NODE_ENV: "production", PORT: 4000 },
max_memory_restart: "512M",
},
],
};