Skip to main content
Практика завдань

Що таке PM2 і як управляти процесами Node.js у виробництві?

Управління процесами в Node.js

У виробництві вам потрібно забезпечити, щоб ваш додаток на Node.js:

  • Продовжував працювати у разі збою (автоматичний перезапуск)
  • Використовував усі ядра ЦП (кластерний режим)
  • Міг бути моніторингом (логи, метрики)
  • Міг бути розгорнутий без простоїв (перезавантаження без простоїв)

PM2 є найпопулярнішим менеджером процесів для Node.js у виробництві.


Чому не просто node server.js?

ПроблемаБез PM2З PM2
Збій програмиПроцес зупиняється, залишається зупиненимАвтоматично перезапускається
БагатоядерністьВикористовує лише 1 ядроКластерний режим (усі ядра)
ЛогуванняВиводиться в stdout, втрачаєтьсяЗбережені файли логів
РозгортанняПростій під час перезапускуПерезавантаження без простоїв
МоніторингНемає вбудованогоЦП, пам'ять, перезапуски

Як почати з PM2

bash
# Встановити глобально npm install -g pm2 # Запустити додаток pm2 start server.js # Запустити з параметрами pm2 start server.js --name "my-api" -i max # кластерний режим, усі ЦП # Переглянути запущені процеси pm2 list # Моніторинг в реальному часі pm2 monit # Переглянути логи pm2 logs pm2 logs my-api --lines 100

Файл екосистеми (ecosystem.config.js)

js
module.exports = { apps: [{ name: 'my-api', script: 'dist/main.js', instances: 'max', // Використовувати всі ядра ЦП exec_mode: 'cluster', // Кластерний режим max_memory_restart: '1G', env: { NODE_ENV: 'production', PORT: 3000 }, env_staging: { NODE_ENV: 'staging', PORT: 3001 } }] };
bash
# Запустити з файлом екосистеми pm2 start ecosystem.config.js # Запустити для конкретного середовища pm2 start ecosystem.config.js --env staging

Основні команди PM2

КомандаОпис
pm2 start app.jsЗапустити
pm2 stop appЗупинити
pm2 restart appПерезапустити
pm2 reload appПерезавантаження без простоїв
pm2 delete appВидалити з PM2
pm2 listПереглянути всі процеси
pm2 monitПанель моніторингу в реальному часі
pm2 logsПереглянути логи
pm2 saveЗберегти список процесів
pm2 startupАвтоматичний запуск при завантаженні

Кластерний режим

Кластерний режим PM2 створює кілька екземплярів вашого додатку, розподіляючи навантаження між ядрами ЦП:

bash
# Запустити 4 екземпляри pm2 start server.js -i 4 # Запустити на всіх доступних ЦП pm2 start server.js -i max # Масштабувати вгору/вниз pm2 scale my-api +2 # Додати ще 2 екземпляри pm2 scale my-api 2 # Встановити точно 2

Розгортання без простоїв

bash
# Перезавантажити коректно (по одному в кластерному режимі) pm2 reload my-api # Робочий процес розгортання pm2 deploy ecosystem.config.js production setup pm2 deploy ecosystem.config.js production

Альтернативи PM2

ІнструментСфера використання
DockerРозгортання на основі контейнерів
systemdУправління службами Linux
KubernetesОркестрація контейнерів в масштабах
nodemonТільки для розробки (не для виробництва)
foreverПростий менеджер процесів (старий)

Рекомендація для виробництва: Використовуйте PM2 для простих розгортань на VPS. Для мікросервісів в масштабах розгляньте Docker + Kubernetes з належними перевірками стану та автоматичним масштабуванням.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань