PM2 für JavaScript (Node.js): Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

PM2 für JavaScript (Node.js): Vollständige Anleitung mit Beispielen

1. Was ist PM2 und warum wird es benötigt?

PM2 (Process Manager 2) ist ein leistungsstarker Prozessmanager für Node.js-Anwendungen, der speziell für den Einsatz in der Produktion entwickelt wurde. Er ermöglicht das Starten, Stoppen, Neustarten und Überwachen von Node.js-Anwendungen und sorgt für hohe Verfügbarkeit und Ausfallsicherheit. PM2 startet abgestürzte Prozesse automatisch neu, verteilt die Last auf mehrere Instanzen (Clustering), bietet einen integrierten Load-Balancer und unterstützt unterbrechungsfreie (graceful) Neustarts ohne Ausfallzeiten.

In der Produktion treten bei Node.js-Anwendungen häufig unerwartete Fehler, Speicherlecks oder Überlastungen auf. PM2 löst diese Probleme, indem es als „Wächter-Daemon“ fungiert: Es überwacht den Zustand jedes Prozesses, protokolliert stdout/stderr, liefert Leistungsmetriken (CPU, Speicher) und ermöglicht die Verwaltung über die CLI oder API. Ohne PM2 müssten Entwickler manuell Skripte für Neustarts, Überwachung und Skalierung schreiben – PM2 automatisiert all diese Aufgaben.

Zu den wichtigsten Funktionen von PM2 gehören: Clustering (Ausführung mehrerer Worker auf allen CPU-Kernen), unterbrechungsfreie Neustarts, Umgebungsverwaltung (Development/Production), integriertes Monitoring (pm2 monit), Unterstützung von Konfigurationsdateien (ecosystem.config.js) und die Integration mit Init-Systemen (systemd, upstart) für den automatischen Start beim Server-Hochfahren.

2. Installation

PM2 wird global über npm (Node Package Manager) installiert. Der genaue Befehl lautet:

npm install -g pm2

So installieren Sie eine bestimmte Version:

npm install -g pm2@5.3.0

Überprüfen Sie nach der Installation die Version:

pm2 --version

3. Schnellstart – Minimales Arbeitsbeispiel

Erstellen Sie eine einfache Node.js-Anwendung app.js:

// app.js
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hallo von PM2!\n');
});

const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
  console.log(`Server läuft auf Port ${PORT}`);
});

Starten Sie die Anwendung mit PM2:

pm2 start app.js --name my-app

Überprüfen Sie den Status:

pm2 status

Stoppen Sie die Anwendung:

pm2 stop my-app

4. Wichtige Methoden/Funktionen/Klassen

4.1. pm2.start() – Anwendung starten

Signatur: pm2.start(script, options, callback)

Funktion: Startet das angegebene Skript als PM2-Prozess mit den definierten Optionen (Name, Anzahl der Instanzen, Umgebungsvariablen).

Arbeitsbeispiel:

const pm2 = require('pm2');

pm2.connect((err) => {
  if (err) {
    console.error(err);
    process.exit(2);
  }

  pm2.start({
    script: 'app.js',
    name: 'my-app',
    instances: 2, // 2 Instanzen starten
    exec_mode: 'cluster', // Cluster-Modus
    env: {
      NODE_ENV: 'production',
      PORT: 3000
    }
  }, (err, apps) => {
    if (err) {
      console.error(err);
      return pm2.disconnect();
    }
    console.log('App gestartet:', apps);
    pm2.disconnect();
  });
});

4.2. pm2.stop() – Prozess stoppen

Signatur: pm2.stop(process, callback)

Funktion: Stoppt den angegebenen Prozess (nach Name, ID oder alle Prozesse).

Arbeitsbeispiel:

const pm2 = require('pm2');

pm2.connect((err) => {
  if (err) {
    console.error(err);
    process.exit(2);
  }

  // St                    

Empfehlungen