 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  PM2 — zarządzanie procesami Node.js na VPS

# 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.

Contabo

Tani VPS z dużym RAM — idealny do Node.js z PM2 cluster mode na 4-6 rdzeniach

VPS Node.js

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

Mikrus

Tani VPS do testowania PM2 i Node.js przed skalowaniem na większy serwer

Tani VPS

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

LH.pl

Hosting współdzielony z Node.js i PHP — alternatywa dla samodzielnego VPS

Managed

[Aktywuj rabat →](/out/lh-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/lh-pl)

## Powiązane strony

-   [Node.js na hostingu współdzielonym](/baza-wiedzy/nodejs-na-hostingu-wspoldzielonym)
-   [Docker na VPS — instalacja i konfiguracja](/baza-wiedzy/docker-na-vps)
-   [Nginx load balancer — konfiguracja upstream](/baza-wiedzy/nginx-load-balancer-konfiguracja)
-   [Nginx — konfiguracja virtual hostów](/baza-wiedzy/nginx-vhost-konfiguracja)
-   [Porównanie serwerów VPS](/vps/)
-   [Wszystkie artykuły](/baza-wiedzy/)