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

234 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