一、简介
-
PM2
是一个功能强大的Node.js
进程管理器,它可以帮助管理
、守护
、负载均衡
和监控 Node.js 应用
。使用PM2
,可以让应用在生产环境中更加稳定和可靠。 -
安装
$ npm install -g pm2
二、启动和管理应用
-
可以通过
PM2
启动一个Node.js
应用。假设应用入口文件是app.js
,可以使用以下命令启动:$ pm2 start app.js
-
为应用指定一个名称,这样管理和查看时更容易:
$ pm2 start app.js --name "my-app"
-
查看当前运行的应用:
$ pm2 list
这将显示所有正在运行的应用及其状态。
-
查看某个应用的日志:
$ pm2 logs my-app
-
看所有应用的日志:
$ pm2 logs
三、常用命令
-
停止应用,可以使用应用的名称:
$ pm2 stop my-app
或者使用应用的
ID
:$ pm2 stop 0
-
重启应用
pm2 restart my-app
或者使用应用的
ID
:$ pm2 restart 0
-
删除应用
$ pm2 delete my-app
-
查看应用的状态,要查看单个应用的详细信息(如
CPU
和内存使用情况):$ pm2 show my-app
-
监控应用的资源使用,
PM2
可以监控应用的资源使用情况(如CPU
和内存):$ pm2 monit
四、配置文件(可选)
-
可以使用
ecosystem.config.js
文件来管理应用的配置,这个文件通常放在Node.js 项目根目录
,也就是与package.json
文件在同一层级的位置。my-node-app/ │ ├── app.js ├── app2.js ├── ecosystem.config.js <-- 放在这里 ├── package.json └── node_modules/
-
可以手动创建,也可以使用命令创建,进入项目根目录执行命令,会生成一个基本的
ecosystem.config.js
文件,之后可以根据项目需求修改文件:$ pm2 ecosystem
-
这个配置文件可以在启动多个应用时提供更多的控制和定制。附:# PM2 配置文件(ecosystem.config.js 字段详细介绍)
// ecosystem.config.js module.exports = { apps: [ { name: 'app1', // 应用名称 script: './app.js', // 启动文件 instances: 'max', // 根据 CPU 核数启动最大进程数 exec_mode: 'cluster', // 启用集群模式 watch: true, // 监控文件变动 env: { NODE_ENV: 'development', }, env_production: { NODE_ENV: 'production', }, }, { name: 'app2', script: './app2.js', instances: 2, // 启动 2 个进程 } ] };
-
当有了
ecosystem.config.js
文件后,可以通过以下命令启动配置中的所有应用:$ pm2 start ecosystem.config.js
如果只想启动其中的某个应用,可以指定应用的名称:
$ pm2 start ecosystem.config.js --only app1
五、使用 PM2
在服务器上保持应用持续运行
-
保存应用的进程列表
可以使用
pm2 save
命令来保存当前的进程列表,以便重启后自动恢复:$ pm2 save
-
启动时自动恢复应用
PM2
提供了一个startup
命令,可以在系统重启后自动启动PM2
和应用。运行以下命令来生成启动脚本并让PM2
在系统启动时自动恢复应用:$ pm2 startup
此命令会生成一条类似于以下的命令:
$ sudo env PATH=$PATH:/usr/local/bin pm2 startup systemd -u <username> --hp /home/<username>
运行生成的命令来注册启动脚本。
-
保存配置并重启
在设置好
startup
后,使用以下命令保存进程列表,并确保在重启后恢复:$ pm2 save
六、PM2
集群模式
-
PM2
提供集群模式来启用多核处理。通过集群模式,PM2
会根据服务器的CPU
核数启动多个进程,从而提高应用的并发处理能力。 -
启动集群模式
可以在启动应用时使用
-i
参数指定启动的进程数量。例如,如果服务器有4
个CPU
核心,可以启动4
个进程:$ pm2 start app.js -i 4
如果想让
PM2
自动根据CPU
核心数来启动进程,可以使用:$ pm2 start app.js -i max
这将根据服务器的
CPU
核心数来启动最大数量的进程。 -
PM2
的持久化和监控PM2
提供了PM2 Plus
和Keymetrics
服务来帮助监控和管理Node.js
应用。可以通过PM2
注册并访问这些服务,实时查看应用的健康状况和性能指标。