
PM2: управление Node.js процессами
PM2 — это продвинутый процессный менеджер для Node.js, который позволяет запускать, мониторить и масштабировать приложения в продакшене. В этой статье мы разберём, как установить PM2, настроить процессы, использовать кластеризацию, мониторинг и интеграцию с Docker.
1. Что такое PM2
- Управление процессами – запуск, остановка, перезапуск.
- Кластеризация – автоматическое распределение запросов по нескольким воркерам.
- Мониторинг – веб‑интерфейс и API для наблюдения за состоянием.
- Автозапуск – интеграция с systemd, launchd, upstart и др.
2. Установка
npm i -g pm2
После установки можно проверить версию:
pm2 -v
3. Запуск приложения
pm2 start app.js --name myapp
PM2 создаст процесс с именем myapp
. Для просмотра списка процессов:
pm2 list
4. Кластеризация
PM2 автоматически создаёт кластер, если указать -i
(или --instances
):
pm2 start app.js -i max
max
означает количество CPU‑ядер. PM2 распределит воркеры по ядрам.
5. Перезапуск и остановка
pm2 restart myapp
pm2 stop myapp
pm2 delete myapp
6. Мониторинг
PM2 предоставляет веб‑интерфейс:
pm2 monit
или можно подключиться к API: http://localhost:9615
. В интерфейсе видны CPU, память, запросы и логи.
7. Логи
pm2 logs myapp
Можно сохранять логи в файл:
pm2 start app.js --log-file logs/myapp.log
8. Автозапуск при загрузке системы
PM2 умеет генерировать конфигурацию для systemd:
pm2 startup systemd
После выполнения команды скопируйте и выполните предложенную команду, затем сохраните состояние:
pm2 save
9. Интеграция с Docker
В Dockerfile можно установить PM2 и запустить приложение:
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm i -g pm2
CMD ["pm2-runtime", "ecosystem.config.js"]
ecosystem.config.js
описывает процессы:
module.exports = {
apps: [
{
name: "myapp",
script: "app.js",
instances: "max",
exec_mode: "cluster",
env: {
NODE_ENV: "production"
}
}
]
};
10. Расширенные возможности
- Watch mode – автоматический перезапуск при изменении файлов:
pm2 start app.js --watch
. - Load balancer – PM2 может выступать как балансировщик нагрузки.
- Metrics – экспорт метрик в Prometheus:
pm2 monit --metrics
.
11. Лучшие практики
- Разделяйте конфигурацию – храните переменные окружения в
.env
. - Используйте
pm2-runtime
в Docker для корректного управления процессами. - Регулярно обновляйте PM2:
npm i -g pm2@latest
. - Проверяйте логи и настройте алерты.
12. Полезные ссылки
13. Заключение
PM2 упрощает управление Node.js приложениями в продакшене, обеспечивая высокую доступность, масштабируемость и удобный мониторинг. После освоения базовых команд вы сможете быстро развернуть и поддерживать сложные сервисы.