pm2 практическое руководство

Node.js JavaScript

предисловие

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

После успешного запуска мы можем увидеть некоторую информацию о запущенной службе, как показано ниже:

1

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, а затем запущены четыре процесса, что свидетельствует о том, что параметры, которые мы добавили после команды запуска, вступили в силу.

2

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

3

{
    "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

Интерфейс динамического мониторинга выглядит следующим образом:

5

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;

6

Нам нужно установить дополнительные библиотеки следующим образом:

$ npm install pm2-windows-startup -g
$ pm2-startup install

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

$ pm2 save

V. Резюме

В этой статье описывается установка pm2, основные общие команды pm2, файлы конфигурации pm2, а также высокопроизводительные приложения pm2. доступофициальный сайт pm2;И на практике этой статьи автор еще и оптимизировал предыдущую опенсорснуюэкспресс-проектРуководство pm2, соответствующий пост в блоге"Готовый, полнофункциональный экспресс-проект", Надеюсь, это поможет вам.

Адрес блога на github:GitHub.com/ревматизм123/… , в котором собраны все блоги автора, и приглашаем подписаться и отметиться ~

использованная литература:

Блог Woohoo.cn на.com/removing the hard disk/afraid/afraid…

Скрин 2.ключевые показатели.IO/docs/usage/…