eduardweb.
PM2 & NodeIntermediar#nodejs#devops#pm2

PM2 zero-downtime reload pe Node.js — setup complet + gotcha-uri

De Dan Ciobanu, 21 apr. 2026 · 492 vizualizări · 3 like-uri

Postat acum 1 zi
javascript
// ecosystem.config.js
module.exports = {
  apps: [{
    name: 'myapp',
    script: 'server.js',
    instances: 'max',
    exec_mode: 'cluster',
    max_memory_restart: '500M',
    kill_timeout: 5000,
    wait_ready: true,
    listen_timeout: 10000,
    env_production: { NODE_ENV: 'production' }
  }]
};

Scenariul: ai un Next.js / Express în prod și trebuie să faci deploy fără downtime. PM2 + cluster mode rezolvă asta în 3 pași.

Pas 1 — Cluster mode

Pornești aplicația cu mai multe instanțe (câte un CPU core). PM2 rotește request-urile între ele.

pm2 start server.js -i max --name myapp

Pas 2 — Graceful shutdown

În codul Node:

  • Asculți SIGINT și SIGTERM
  • Închizi server-ul HTTP (stop accept connections noi)
  • Aștepți request-urile active să termine
  • Apoi ieși din proces

Pas 3 — Reload cu PM2

pm2 reload myapp — PM2 oprește instanțele una câte una, așteaptă semnalul "ready" de la instanța nouă, abia apoi trece la următoarea.

Gotcha-uri

  • Sticky sessions la WebSocket — folosește Redis adapter pentru Socket.IO
  • Cache local — nu ai cum să-l invalidezi cross-instanță, folosește Redis
  • Memory leaks — setezi max-memory-restart: 500M ca plasă de siguranță

Răspunsuri 0

Se încarcă răspunsurile…

Loghează-te pentru a răspunde

Doar membrii comunității pot lăsa comentarii.