PM2 là production process manager không thể thiếu cho Node.js — cluster mode tận dụng multi-core CPU, pm2 reload cho zero-downtime deploy, max_memory_restart auto-restart khi memory leak.
- PM2 là production process manager cho Node.js — giải quyết auto-restart, clustering, logging, monitoring trong một tool.
- Ecosystem config (
ecosystem.config.js):module.exports = { apps: [{ name: 'api', script: 'dist/index.js', instances: 'max', exec_mode: 'cluster', env: { NODE_ENV: 'production', PORT: 3000 }, max_memory_restart: '500M', error_file: 'logs/err.log', out_file: 'logs/out.log' }] }—pm2 start ecosystem.config.js. - Zero-downtime reload:
pm2 reload apirestart từng worker một (rolling restart), không nhưpm2 restartkill tất cả cùng lúc — dùng reload cho deploys. - Monitoring dashboard:
pm2 monitreal-time CPU/RAM per process;pm2 statusoverview tất cả processes. - Log management:
pm2 logs api --lines 100xem logs;pm2 flushclear logs; tích hợp với logrotate để tránh disk full. - Startup scripts:
pm2 startupgenerate systemd/init script để PM2 tự start khi server reboot;pm2 savelưu current process list.max_memory_restart: tự restart process khi vượt ngưỡng RAM — safety net cho memory leaks.
Pitfall: PM2 cluster mode dùng shared nothing — sessions/cache phải ở Redis; pm2 reload không graceful nếu app không handle SIGINT/SIGTERM.