admin管理员组

文章数量:1533093

2024年6月25日发(作者:)

pm2带负载均衡功能的Node应用进程管理工具

pm2 介绍

pm2是nodejs应用程序的进程管理工具,内置负载均衡。其可以帮助您保持

node应用程序的永久活动,无需停机皆可重新加载node应用程序。

pm2的主要特性

1.

2.

3.

4.

5.

6.

7.

内建负载均衡(使用了Node cluster 集群模块)

后台运行

0秒停机重载(我的理解: 在维护升级node应用程序时不需要停机)

停止不稳定的进程(避免无限循环)

提供 HTTP API

远程控制和实时接口API(Nodejs模块,允许和pm2交互)

控制台检测

安装(全局)

npm install -g pm2

常用命令一览

## 普通 ## npm install -g pm2 # 安装pm2 pm2 start # 启动&守护进程,自

动重启Node应用程序 pm2 start # 启动&守护进程,自动重启python应用

程序 pm2 start # 启动&守护进程,自动重启bash脚本 pm2 start

# 启动&守护中声明的所有应用 ## 集群模式(只支持node进程) #

# pm2 start -i 4 # 启动4个应用程序实例,并将网络请求负载均衡到每个应

用中。 pm2 start -i max # 根据有效cpu数启动最大的进程数 pm2 start app.

js -x # 用fork模式启动而非cluster pm2 start -e -o # 启动应

用程序并分别指定标准输出日志文件和错误日志文件 pm2 reload all # 0秒重启所

有应用 pm2 scale [app-name] 10 # 将应用程序调整到10个实例 ## 进程监控 #

# pm2 list # 列出所有由pm2启动的进程 pm2 monit # 显示每个应用占用的cpu

和内存 pm2 show [app-name] # 显示一些进程的所有信息 ## 日志管理 ## pm2 l

ogs # 显示所有应用的日志 pm2 logs [app-name] # 显示一些应用的日志 pm2 logs

--json # json化日志 pm2 flush # 清除日志 pm2 reloadLogs #重载日志 ## 进程

状态管理 ## pm2 start --name="api" # 启动应用并命名为api pm2 start app.

js -- -a 34 # 启动应用,并传递参数“-a 34”(在--之后给传递参数) pm2 star

t --watch # 启动应用,并设置当文件改变时会重启应用 pm2 start #

启动&守护进程,自动重启python应用程序 pm2 start # 启动&守护进程,

自动重启bash脚本 pm2 start # 启动&守护中声明的所有应用 p

m2 reset [app-name] # 重置应用的重启数量 pm2 stop all # 停止所有应用 pm2 sto

p 0 # 停止id为0的应用 pm2 restart all # 重启所有应用 pm2 gracefulReload all

# 在集群模式下,平稳的重新加载所有应用 pm2 delete all # 杀掉所有应用 pm2 de

lete 0 # 杀掉id为0的进程 ## 重启/引导管理 ## pm2 startup # 自动检测init

系统 + 在服务器启动时生成和配置pm2引导 pm2 startup [platform] # 手动指定启

动系统,可以是:systemd、upstart、launchd、rcd。 pm2 unstartup # 在服务器启

动时禁用和删除pm2引导 pm2 save # 保存当前进程列表 pm2 resurrect # 恢复以

前保存的进程 pm2 unstartup # 停用和删除启动系统 pm2 update # 保存进程,终

止pm2并恢复进程 pm2 generate # 生成样本json配置文件 ## 部署 ## pm2 dep

loy prod setup # 设置“生产环境”远程服务器 pm2 deploy prod #

更新“生产环境”远程服务器 pm2 deploy prod revert # 将“生产环境”远程

服务器恢复 ## 模块系统 ## pm2 module:generate [name] # 生成名为name的示

例模块 pm2 install pm2-logrotate # 安装模块(这里是日志循环模块) pm2 uninst

all pm2-logrotate # 卸载模块(这里是日志循环模块) pm2 publish # 增量邦本,

git push和npm发布

命令详解

## 进程管理 ## pm2 list # 列出所有正在运行的由pm2启动的应用程序 pm2 stop

# 停止应用程序(一名称, id, 所有, json

文件内声明的应用) pm2 restart # 重启应

用程序 pm2 delete # 杀掉进行(应用程序) pm

2 describe # 列出应用程序(id, 一名称)更详细的信息 ## 日

志 ## # 实时显示指定进程or所有进程的日志,并提供标准、原始、JSON和格式

化输出 pm2 logs [ "all" , app-name , app-id ] [--json] [--format] [--raw]

特别说明

1.

生成启动脚本

pm2可以生成和配置启动脚本,以方便在每次服务器重启时保持pm2和您进程的

活动。 支持init系统,如下:

systemd(Ubuntu 16 , CentOS, Arch)

upstart( Ubuntu 14/12)

launchd( MacOSx, Darwin)

rcd( FreeBSD)

2.

模块系统

pm2嵌入了一个简单而强大的模块系统,安装模块很简单

pm2 install

下面是一些pm2兼容模块:

pm2-logrotate # 自动轮换pm2的日志和管理的应用程序

pm2-webshell # 在浏览器中展示一个功能完备的终端

• pm2-server-monit # 监控您的服务器运行状态

可以通过配置一个pm2启动文件,统一管理多个应用程序。

PS: 若想使用pm2启动监控python进程,推荐通过sh脚本文件来启动

python文件

# 文件内容 # python ./web_

说明:

apps: json结构,apps是一个数组,每一个数组成员就是对应一个pm2中

运行的应用

name:应用程序名称

cwd:应用程序所在的目录

script:应用程序的脚本路径

log_date_format: 指定日志日期格式

error_file:自定义应用程序的错误日志文件

out_file:自定义应用程序日志文件

pid_file:自定义应用程序的pid文件

env: objects对象,可设置pm2的编码格式等

– PYTHONIOENCODING:字符串,编码,如: "utf-8"

instances: 实例(进程)个数

max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计

数)

max_memory_restart : 最大内存限制,超出内存限制会自动重启

cron_restart:定时启动,解决重启能解决的问题

watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变

动时,pm2会自动重载。这里也可以设置你要监控的文件。

merge_logs: 合并日志

exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs

exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认

是fork

autorestart:启用/禁用应用程序崩溃或退出时自动重启

vizion:启用/禁用vizion特性(版本控制)

配置好后,可以通过以下命令行启动应用:

pm2 start

pm2设置开机自启动

Linux

1. 运行 pm2 startup,检测init系统,并生成启动脚本(若有提示需要执行命

令,请直接照搬执行。)

2. 运行 pm2 save,会将当前pm2所运行的应用保存在/[用户路

径]/root/.pm2/2下,当开机重启时,运行pm2自启动服务脚本,

并且到/root/.pm2/2下读取应用并启动。

Window

1. 安装并配置 pm2-windows-service pm2-windows-service可以将 pm2 安装

成 windows service, 达到开机运行的目的。

npm i -g pm2-windows-service

PS: 将pm2安装为 windows service,会导致只能以管理员身份运行pm2

命令,普通用户运行pm2命令会报如下错误:

图片.png

2. 添加pm2环境变量 添加系统环境变量 PM2_HOME=D:.pm2 右键 [我的电脑]

- [属性] - [高级系统设置] - [环境变量] - 新建 [系统变量] 名称PM2_HOME 路

径D:.pm2(.pm2路径一般为:c:Users.pm2,具体以实际情况

为准)

3. 安装服务

# 以管理员权限打开新的命令行窗口,执行以下命令来安装服务 pm2-service-instal

l # 拓展:卸载服务 pm2-service-uninstall

Perform environment setup ? 选 n, 继续 此时, PM2服务已安装成功并已启动, 可以

通过 Wn+R来查看,输入即可看到服务

图片.png

4. 添加到自启动服务 pm2 save很重要, 它保存当前pm2 正在管理的NodeJS

服务, 并在开机后恢复这些服务。

pm2 save

本文标签: 启动进程应用程序应用重启