Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

PM2 — zarządzanie procesami Node.js na VPS

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Node.js

Uruchomiłeś aplikację Node.js komendą node app.js i zamknąłeś terminal — serwer padł. Crash aplikacji? Restart VPS? Znów trzeba logować się i uruchamiać ręcznie. PM2 rozwiązuje wszystkie te problemy: działa jako dæmon, restartuje procesy po awarii, startuje automatycznie po restarcie serwera i umożliwia uruchamianie wielu instancji (cluster mode) dla maksymalnego wykorzystania CPU.

Instalacja PM2

PM2 instalujesz globalnie przez npm. Upewnij się, że masz Node.js i npm na VPS (zalecane: Node.js 18 LTS lub nowszy):

# Instalacja PM2 globalnie
npm install -g pm2

# Sprawdzenie wersji
pm2 --version

# Opcjonalnie: aktualizacja PM2
npm install -g pm2@latest
pm2 update

Podstawowe komendy

Najważniejsze komendy PM2, których używasz codziennie:

# Uruchomienie aplikacji
pm2 start app.js --name "moja-aplikacja"

# Lista wszystkich procesów
pm2 list
pm2 ls       # skrót

# Szczegółowe info o procesie
pm2 show moja-aplikacja

# Restart / stop / usunięcie
pm2 restart moja-aplikacja
pm2 stop moja-aplikacja
pm2 delete moja-aplikacja

# Restart wszystkich procesów
pm2 restart all

# Logi na żywo
pm2 logs
pm2 logs moja-aplikacja          # tylko jeden proces
pm2 logs moja-aplikacja --lines 100  # ostatnie 100 linii

ecosystem.config.js — konfiguracja jako kod

Zamiast długich komend startowych, definiuj aplikacje w pliku konfiguracyjnym ecosystem.config.js (lub .cjs). Plik ten możesz dodać do repozytorium — konfiguracja jako kod:

// ecosystem.config.js
module.exports = {
  apps: [
    {
      name: 'moja-aplikacja',
      script: 'dist/server.js',        // główny plik po build
      instances: 'max',                // cluster mode: tyle ile rdzeni CPU
      exec_mode: 'cluster',
      watch: false,                    // NIE włączaj na produkcji
      max_memory_restart: '500M',      // restart gdy RAM > 500 MB

      // Zmienne środowiskowe
      env: {
        NODE_ENV: 'development',
        PORT: 3000,
      },
      env_production: {
        NODE_ENV: 'production',
        PORT: 3000,
        DATABASE_URL: 'postgres://user:pass@localhost/db',
      },

      // Logi
      out_file: '/var/log/pm2/app-out.log',
      error_file: '/var/log/pm2/app-err.log',
      merge_logs: true,
      log_date_format: 'YYYY-MM-DD HH:mm:ss',
    },
  ],
};
# Uruchomienie z ecosystem
pm2 start ecosystem.config.js

# Uruchomienie w trybie produkcyjnym (env_production)
pm2 start ecosystem.config.js --env production

# Reload (bez downtime, graceful restart)
pm2 reload ecosystem.config.js --env production

Cluster mode — wiele rdzeni CPU

Node.js jest jednowątkowy — domyślnie utilizuje tylko jeden rdzeń procesora, nawet na 8-rdzeniowym VPS. Cluster mode uruchamia N kopii aplikacji i rozkłada ruch między nimi:

# Uruchom 4 instancje (ręcznie)
pm2 start app.js -i 4

# Automatycznie: tyle instancji ile rdzeni CPU
pm2 start app.js -i max

# W ecosystem.config.js (zalecane):
# instances: 'max'  lub  instances: 4
# exec_mode: 'cluster'

# Sprawdzenie ile workers działa
pm2 list

Ważne: cluster mode działa bezproblemowo dla aplikacji bezstanowych (stateless). Jeśli Twoja aplikacja trzyma stan w pamięci procesu (np. sesje w Map), różne requesty mogą trafić do różnych instancji — przenieś stan do Redis lub bazy danych.

pm2 startup — autostart po restarcie VPS

Bez konfiguracji autostartu po restarcie serwera procesy PM2 nie wznowią się. Dwie komendy załatwiają sprawę na stałe:

# Krok 1: wygeneruj i uruchom skrypt systemd
pm2 startup
# PM2 wyświetli polecenie do skopiowania, np.:
# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
# Skopiuj i uruchom to polecenie!

# Krok 2: zapisz aktualną listę procesów
pm2 save

# Opcjonalnie: wyłączenie autostartu
pm2 unstartup systemd

Po restarcie VPS możesz weryfikować: pm2 list — procesy powinny być w stanie online.

Monitoring — pm2 monit i pm2 plus

# Terminal dashboard (CPU, RAM, logi na żywo)
pm2 monit

# Metryki JSON (przydatne do skryptów)
pm2 prettylist
pm2 show moja-aplikacja

pm2 monit to wbudowany dashboard terminalowy — pokazuje zużycie CPU i RAM każdego procesu w czasie rzeczywistym, listę procesów i strumień logów. Wystarczy do codziennego monitorowania.

Rotacja logów — pm2-logrotate

Domyślnie PM2 nie rotuje logów — plik rośnie bez ograniczeń. Moduł pm2-logrotate dodaje rotację automatycznie:

# Instalacja modułu
pm2 install pm2-logrotate

# Konfiguracja
pm2 set pm2-logrotate:max_size 10M       # rotuj gdy plik > 10 MB
pm2 set pm2-logrotate:retain 7           # przechowuj 7 plików
pm2 set pm2-logrotate:compress true      # kompresuj stare logi (gzip)
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'  # codziennie o północy

# Sprawdzenie konfiguracji
pm2 conf pm2-logrotate

Zero-downtime deployment

W cluster mode PM2 obsługuje graceful reload: restaruje instancje jedna po drugiej, bez przerwy w ruchu:

# Graceful reload (zero downtime) — cluster mode
pm2 reload moja-aplikacja

# Twardy restart (krótka przerwa)
pm2 restart moja-aplikacja

# Reload z nowym ecosystem
pm2 reload ecosystem.config.js --env production

Tip: W aplikacji Express/Fastify obsługuj sygnał SIGINT i zamykaj serwer gracefully (czekaj na dokończenie aktywnych requestów). PM2 wyśle ten sygnał przed restartem workerów. Bez tego Reload działa, ale aktywne requesty mogą zostać przerwane.

Najczęstsze pytania

Czym jest PM2 i do czego służy? +
PM2 (Process Manager 2) to zaawansowany menedżer procesów dla Node.js. Pozwala uruchamiać aplikacje w tle, automatycznie restartować je po crashu, zarządzać logami, monitorować zużycie CPU i RAM, a także uruchamiać wiele instancji w trybie cluster dla lepszego wykorzystania wielordzeniowych procesorów. Jest de facto standardem do hostowania Node.js na VPS.
Jak sprawić, żeby PM2 startował automatycznie po restarcie serwera? +
Użyj komendy pm2 startup — PM2 wygeneruje polecenie systemd (lub init.d) dostosowane do Twojego systemu. Skopiuj i uruchom to polecenie jako root. Następnie zapisz aktualną listę procesów: pm2 save. Od tej pory po restarcie VPS PM2 automatycznie wznowi wszystkie zapisane procesy.
Co to jest cluster mode w PM2? +
Node.js domyślnie działa jednowątkowo i wykorzystuje tylko jeden rdzeń CPU. Cluster mode w PM2 uruchamia kilka instancji tej samej aplikacji (workers) — po jednej na każdy rdzeń. PM2 działa jako master i rozdziela przychodzące połączenia między workers za pomocą wbudowanego load balancera. Efekt: pełne wykorzystanie 4/8/16-rdzeniowego VPS bez żadnych zmian w kodzie aplikacji.
Jak zarządzać logami w PM2? +
PM2 domyślnie zapisuje logi do ~/.pm2/logs/ — osobne pliki dla stdout i stderr każdej aplikacji. Komenda pm2 logs pokazuje logi na żywo. Dla rotacji logów (żeby plik nie urósł do gigabajtów) zainstaluj moduł: pm2 install pm2-logrotate i skonfiguruj go przez pm2 set pm2-logrotate:max_size 10M pm2 set pm2-logrotate:retain 7 — maksymalny rozmiar pliku 10 MB, 7 dni historii.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.