предисловие
pm2 — это инструмент управления процессами узла, который можно использовать для упрощения многих утомительных задач управления приложениями узла, таких как мониторинг производительности, автоматический перезапуск, балансировка нагрузки и т. д., поскольку после перезагрузки сервера на работе необходимо перезапускать каждый сервис один за другим, что не только громоздко и неэффективно, но и легко забыть открыть некоторые сервисы, поэтому я специально провел более комплексное исследование + практика для pm2, при решении рабочих задач более полное резюме обучения и практики выполнено, и теперь я делюсь им с вами.
Адрес блога на github:GitHub.com/ревматизм123/… , в котором собраны все блоги автора, и приглашаем подписаться и отметиться ~
1. Установка и каталог
1. Запустите следующую команду для глобальной установки
$ npm install -g pm2
2. После установки автоматически будут созданы следующие каталоги:
$HOME/.pm2/logs // 包括所有应用的日志
$HOME/.pm2/pids // 包括所有应用的 pids
$HOME/.pm2/dump.pm2 // 开机自启动配置
$HOME/.pm2/pm2.log // pm2 日志
$HOME/.pm2/pm2.pid // pm2 pid
2. Общие команды
1, команда запуска
$ pm2 start app.js
После успешного запуска мы можем увидеть некоторую информацию о запущенной службе, как показано ниже:
2. Параметры командной строки
Мы можем добавить некоторые параметры параметров после самой простой команды запуска, чтобы удовлетворить наши потребности.Обычно используемые параметры параметров следующие:
- --watch: прослушивание изменений в каталоге приложения и автоматический перезапуск после внесения изменений.
- -i или --instance: количество включенных экземпляров, которые можно использовать для балансировки нагрузки.Если -i 0 или -i max, количество экземпляров определяется в соответствии с текущим количеством ядер машины.
- --ignore-watch: Исключить каталоги или файлы из мониторинга, которые могут быть конкретным именем файла или обычным шаблоном.
- -n или --name: имя приложения, которое можно использовать при просмотре информации о приложении.
- -o или --output path: Путь к стандартному выходному файлу журнала.
- -e или --error path: Путь к файлу журнала вывода ошибок.
Мы добавляем некоторые из вышеперечисленных параметров после команды запуска.Полная команда запуска выглядит следующим образом:
$ pm2 start app.js --watch -i max -n first_app
Скриншот после успешного запуска выглядит следующим образом: На скриншоте мы видим, что имя запущенного приложения изменилось на first_app, а затем запущены четыре процесса, что свидетельствует о том, что параметры, которые мы добавили после команды запуска, вступили в силу.
3. Команда перезапуска
$ pm2 restart app.js
4. Команда остановки
Чтобы остановить определенное приложение, вы можете сначала получить имя приложения или идентификатор процесса через список pm2, а затем вызвать следующую команду, чтобы остановить соответствующее приложение;
$ pm2 stop app_name | app_id
Если вам нужно остановить все приложения, используйте следующую команду:
$ pm2 stop all
5. Удалить команду
Чтобы удалить определенное приложение, вы можете получить имя приложения или идентификатор процесса через список pm2, а затем вызвать следующую команду для удаления соответствующего приложения;
$ pm2 delete app_name | app_id
Если вам нужно удалить все приложения, используйте следующую команду:
$ pm2 delete all
6. Проверьте, какие процессы
$ pm2 list
7. Просмотр информации о процессе
$ pm2 descripe app_name | app_id
{
"apps": {
"name": "express_project", // 项目名
"script": "app.js", // 执行文件
"cwd": "./", // 根目录
"args": "", // 传递给脚本的参数
"interpreter": "", // 指定的脚本解释器
"interpreter_args": "", // 传递给解释器的参数
"watch": true, // 是否监听文件变动然后重启
"ignore_watch": [ // 不用监听的文件
"node_modules",
"public"
],
"exec_mode": "cluster_mode", // 应用启动模式,支持 fork 和 cluster 模式
"instances": "max", // 应用启动实例个数,仅在 cluster 模式有效 默认为 fork
"error_file": "./logs/app-err.log", // 错误日志文件
"out_file": "./logs/app-out.log", // 正常日志文件
"merge_logs": true, // 设置追加日志而不是新建日志
"log_date_format": "YYYY-MM-DD HH:mm:ss", // 指定日志文件的时间格式
"min_uptime": "60s", // 应用运行少于时间被认为是异常启动
"max_restarts": 30, // 最大异常重启次数
"autorestart": true, // 默认为 true, 发生异常的情况下自动重启
"restart_delay": "60" // 异常重启情况下,延时重启时间
"env": {
"NODE_ENV": "production", // 环境参数,当前指定为生产环境
"REMOTE_ADDR": ""
},
"env_dev": {
"NODE_ENV": "development", // 环境参数,当前指定为开发环境
"REMOTE_ADDR": ""
},
"env_test": { // 环境参数,当前指定为测试环境
"NODE_ENV": "test",
"REMOTE_ADDR": ""
}
}
}
Вы можете использовать параметр -i для настройки количества кластеров для достижения балансировки нагрузки.Соответствующие команды приведены ниже, вы можете просмотретьГлава официального сайта;
$ pm2 start app.js -i 3 // 开启三个进程
$ pm2 start app.js -i max // 根据机器CPU核数,开启对应数目的进程
2, просмотр журнала
Помимо просмотра журналов путем открытия файла журнала, мы также можем просматривать журналы в реальном времени через журналы pm2, что полезно для устранения неполадок в Интернете; команда просмотра журнала выглядит следующим образом:
$ pm2 logs
Затем мы можем увидеть вывод журнала в режиме реального времени в командном окне:
3. Мониторинг
Мы можем использовать следующую команду для просмотра состояния процессов, запущенных в данный момент через pm2;
$ pm2 monit
Интерфейс динамического мониторинга выглядит следующим образом:
4. Автоматический перезапуск, когда память превышает лимит использования
Мы можем использовать параметр --max-memory-restart для ограничения лимита использования памяти и автоматического перезапуска при превышении лимита использования памяти;
$ pm2 start app.js --max-memory-restart 100M
5. Самостоятельный запуск при загрузке
В Linux, чтобы настроить загрузку на автоматический запуск, вам нужно всего лишь выполнить следующие два шага:
- бегать
pm2 startup
, то есть скрипт запуска pm2-root генерируется в каталоге /etc/init.d/, и pm2-root автоматически устанавливается как служба; - бегать
pm2 save
, он сохранит текущее приложение, запущенное pm2, в /root/.pm2/dump.pm2, когда загрузка перезапустится, запустит сценарий службы pm2-root и прочитает приложение в /root/.pm2/dump.pm2 и запустит вверх;
Но при запуске запуска pm2 в Windows будет сообщено о следующей ошибке, поскольку она не подходит для системы Windows;
Нам нужно установить дополнительные библиотеки следующим образом:
$ npm install pm2-windows-startup -g
$ pm2-startup install
Затем нам нужно только запустить следующую команду сохранения, чтобы добавить текущую службу в команду автозапуска загрузки; даже если сервер перезапустится позже, служба, которую мы сохранили, будет автоматически перезапущена;
$ pm2 save
V. Резюме
В этой статье описывается установка pm2, основные общие команды pm2, файлы конфигурации pm2, а также высокопроизводительные приложения pm2. доступофициальный сайт pm2;И на практике этой статьи автор еще и оптимизировал предыдущую опенсорснуюэкспресс-проектРуководство pm2, соответствующий пост в блоге"Готовый, полнофункциональный экспресс-проект", Надеюсь, это поможет вам.
Адрес блога на github:GitHub.com/ревматизм123/… , в котором собраны все блоги автора, и приглашаем подписаться и отметиться ~
использованная литература: