Введение в управление NodeJS в производственной среде с использованием PM2

Если вы управляете приложением NodeJS в производственной среде, PM2 может значительно облегчить вам жизнь. PM2 - это полнофункциональный инструмент управления процессами для NodeJS в производственных средах.

С PM2 вы можете быть уверены, что процесс вашего приложения автоматически перезапустится, если произойдет сбой. Он также предоставляет удобные инструменты мониторинга и возможность балансировки нагрузки между несколькими кластерами. Мы рассмотрим это и многое другое в этой статье.

Демо-приложение

Чтобы продемонстрировать всю мощь PM2, нам понадобится пример приложения NodeJS для управления. Прежде чем мы начнем, нам нужно будет создать базовый пример приложения NodeJS и Express, которое мы будем запускать с PM2 в следующем разделе.

Первым шагом будет создание нового проекта npm и установка в качестве зависимости Express. Выполните следующие команды в терминале.

mkdir pm2-nodejs-example
cd pm2-nodejs-example/
npm init -y
npm install --save express

После завершения настройки нам просто нужно добавить несколько строк кода в новый файл. Мы назовем его index.js и добавим следующее к содержимому файла.

Это в значительной степени самая базовая версия приложения NodeJS / Express, которую мы можем создать, но это не так важно для этой демонстрации.

PM2

Чтобы начать работу с PM2, нам сначала нужно установить его глобально через npm. Для установки выполните следующую команду в терминале.

npm install pm2 -g

Теперь, когда он установлен, давайте приступим к процессу, выполнив следующую команду.

Примечание. Возможно, вам потребуется добавить sudo в команду для запуска от имени пользователя root.

pm2 start index.js
// add watch option to automatically restart on file changes
pm2 start index.js --watch
// provide a name for the process
pm2 start index.js --name example-api

Мы видим из распечатки в терминале, что наш процесс является единым, и видим некоторую дополнительную информацию о процессе. Если вы хотите увидеть список текущих команд, вы можете запустить следующую команду.

pm2 list

Вы можете остановить, перезапустить и удалить процесс с помощью следующих команд и либо передать идентификатор процесса, либо «все» в качестве аргумента.

pm2 stop all
pm2 restart 0
pm2 delete all

Теперь перейдем к мониторингу. Выполните следующее, чтобы открыть представление мониторинга PM2.

pm2 monit

Это дает нам простой способ профилировать наше приложение NodeJS в производственной среде и просматривать другую полезную информацию.



Защита API Node.js с помощью Auth0
Руководство по настройке API Node.js с помощью Auth0 medium.com



Журналы

PM2 также предоставляет возможность просматривать журналы вашего приложения прямо в вашем терминале. Выполните следующую команду для потоковой передачи текущих журналов.

pm2 logs

Затем, если вы отправите несколько запросов в наш пример API, вы увидите, что новые сообщения поступают в поток журнала.

У нас также есть следующие команды, чтобы очистить все файлы журналов и перезагрузить журналы.

pm2 flush
pm2 reloadLogs

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

Мы можем запустить наше приложение в кластерном режиме. Это означает, что PM2 будет запускать несколько процессов и запросы балансировки нагрузки между этими разными процессами.

Выполните следующую команду, чтобы работать в кластерном режиме с максимальным количеством процессов.

Примечание. Если у вас еще работают какие-либо процессы, вам нужно удалить их все с помощью pm2 delete all

pm2 start index.js -i max

Максимальное количество процессов определяется количеством ядер на компьютере, на котором вы работаете. Например, у моего ноутбука 8 ядер, поэтому, когда я запускаю максимальное количество кластеров, у меня одновременно выполняется 16 процессов. Итак, 2 процесса на ядро.

Теперь давайте вернемся и снова потрим логи, а затем откроем второй терминал и выполним следующую команду для имитации группы запросов, поступающих на наш сервер.

curl -s "http://localhost:3000?[1-1000]"

По мере выполнения этих запросов вы сможете увидеть в журналах, какой идентификатор процесса отвечает на поступающие запросы.

Если мы снова откроем представление мониторинга, мы увидим, что у нас есть еще несколько опций в меню.

Это лишь малая часть того, что может делать PM2, но это хороший пример для начала работы с PM2 для управления производственными процессами NodeJS. Спасибо за внимание!