PM2: Node.js Prozesse in Produktion verwalten | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

235 Dokumentationen verfügbar

Wissensdatenbank

PM2 Node Process Manager

Zuletzt aktualisiert: 20.01.2026 um 10:05 Uhr

PM2: Node.js Prozesse in Produktion verwalten

Node.js direkt mit node starten ist für Produktion nicht geeignet. PM2 hält Ihre App am Leben, startet bei Crashes neu und nutzt alle CPU-Kerne.

Installation

# Global installieren
npm install -g pm2

# Version prüfen
pm2 --version

Grundlegende Befehle

# App starten
pm2 start app.js

# Mit Namen
pm2 start app.js --name "my-api"

# Alle Prozesse anzeigen
pm2 list
pm2 ls
pm2 status

# Logs anzeigen
pm2 logs
pm2 logs my-api
pm2 logs --lines 100

# Prozess stoppen
pm2 stop my-api
pm2 stop all

# Prozess neustarten
pm2 restart my-api
pm2 restart all

# Prozess löschen
pm2 delete my-api
pm2 delete all

# Monitoring
pm2 monit

Cluster Mode

Nutzt alle CPU-Kerne für maximale Performance:

# Alle Kerne nutzen
pm2 start app.js -i max

# Bestimmte Anzahl
pm2 start app.js -i 4

# Cluster skalieren
pm2 scale my-api +2   # 2 weitere
pm2 scale my-api 6    # Auf 6 setzen

Ecosystem File (empfohlen)

# ecosystem.config.js generieren
pm2 init

# Oder pm2 ecosystem
// ecosystem.config.js
module.exports = {
  apps: [{
    name: 'my-api',
    script: 'src/index.js',
    instances: 'max',
    exec_mode: 'cluster',
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'development',
      PORT: 3000
    },
    env_production: {
      NODE_ENV: 'production',
      PORT: 8080
    }
  }, {
    name: 'worker',
    script: 'src/worker.js',
    instances: 2,
    exec_mode: 'cluster'
  }]
};
# Mit Ecosystem-File starten
pm2 start ecosystem.config.js

# Produktion
pm2 start ecosystem.config.js --env production

Auto-Start bei Server-Reboot

# Startup Script generieren
pm2 startup

# Aktuellen Zustand speichern
pm2 save

# Bei Systemstart werden alle gespeicherten Apps gestartet

# Startup entfernen
pm2 unstartup

Zero-Downtime Reload

# Graceful Reload (kein Downtime)
pm2 reload my-api
pm2 reload all

# Normaler Restart (kurzer Downtime)
pm2 restart my-api

Graceful Shutdown in App

// In Ihrer App
process.on('SIGINT', () => {
  console.log('Shutting down gracefully...');

  server.close(() => {
    console.log('Server closed');
    // Datenbankverbindung schließen etc.
    process.exit(0);
  });

  // Force close nach 10s
  setTimeout(() => {
    process.exit(1);
  }, 10000);
});

Deployment

// ecosystem.config.js
module.exports = {
  apps: [{
    name: 'my-api',
    script: 'src/index.js'
  }],

  deploy: {
    production: {
      user: 'deploy',
      host: 'server.example.com',
      ref: 'origin/main',
      repo: 'git@github.com:user/repo.git',
      path: '/var/www/my-api',
      'pre-deploy-local': '',
      'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
      'pre-setup': ''
    }
  }
};
# Erstmaliges Setup
pm2 deploy production setup

# Deployment
pm2 deploy production

# Rollback
pm2 deploy production revert 1

Nützliche Optionen

Option Beschreibung
--name Prozessname
-i max Cluster mit max CPUs
--watch Bei Änderungen neustarten
--max-memory-restart Restart bei Memory-Limit
--cron Geplante Restarts
--no-autorestart Kein Auto-Restart

Log Management

# Logs anzeigen
pm2 logs
pm2 logs my-api --lines 200

# Logs leeren
pm2 flush

# Log-Dateien
ls ~/.pm2/logs/

Log Rotation

# pm2-logrotate installieren
pm2 install pm2-logrotate

# Konfigurieren
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:compress true

Monitoring

# Terminal-Monitor
pm2 monit

# Web Dashboard (pm2.io)
pm2 plus

# Status als JSON
pm2 jlist
pm2 prettylist

Typische Ecosystem-Config

module.exports = {
  apps: [{
    name: 'api',
    script: 'dist/index.js',
    instances: 'max',
    exec_mode: 'cluster',
    autorestart: true,
    watch: false,
    max_memory_restart: '500M',
    error_file: '/var/log/pm2/api-error.log',
    out_file: '/var/log/pm2/api-out.log',
    log_date_format: 'YYYY-MM-DD HH:mm:ss',
    env: {
      NODE_ENV: 'production',
      PORT: 3000
    }
  }]
};
💡 Tipp: Kombinieren Sie PM2 mit dem Enjyn Server Monitor für externes Monitoring und Benachrichtigungen bei Ausfällen.

Weitere Informationen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120