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

CommandPurpose
pm2 start app.mjs -i maxCluster mode — one worker per CPU
pm2 reload apiZero-downtime reload (graceful)
pm2 logs / monitTail logs, CPU/memory dashboard
pm2 startup + saveResurrect processes after reboot
ecosystem.config.cjsDeclarative 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",
    },
  ],
};