一、简介
-
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注册并访问这些服务,实时查看应用的健康状况和性能指标。