PM2 进程管理工具的使用
PM2 是 node 进程管理工具,可用于进程守护、多进程的启动和线上日志记录等功能。
一、安装与启动
安装:
npm install pm2 -g
启动:
- 在项目中启动
- 单个文件启动
package.json
"scripts": {
"dev": "cross-env NODE_ENV=dev ./node_modules/.bin/nodemon bin/www",
"prd": "cross-env NODE_ENV=production pm2 start bin/www",
},
package.json
"scripts": {
"dev": "cross-env NODE_ENV=dev ./node_modules/.bin/nodemon bin/www",
"prd": "cross-env NODE_ENV=production pm2 start app.js",
},
运行效果:
二、常用命令
# 启动
pm2 start <AppName>/<id>
# 列表
pm2 list
# 重启
pm2 restart <AppName>/<id>
# 停止
pm2 stop <AppName>/<id>
# 删除
pm2 delete <AppName>/<id>
# 信息
pm2 info <AppName>/<id>
# 日志
pm2 log <AppName>/<id>
# cpu、内存占用信息
pm2 monit <AppName>/<id>
三、进程守护
通过 node app.js
和 nodemon app.js
运行 Server 时,如果进程崩溃则进行后续的访问,而 PM2 遇到进程崩溃,会自动重启。
四、常用配置
首先新建 PM2 配置文件(包括进程数量,日志文件目录等)
pm2.config.json
{
"apps": {
"name": "pm2-test-server",
// 启动文件,单个文件的话写为 app.js
"script": "bin/www",
// 是否监听文件变化,自动重启服务
"watch": true,
// 忽略监听的文件
"ignore_watch": [
"node_modules",
"logs"
],
// 多进程(CPU 核数)设置 auto 的话则自动匹配
"instances": 4,
// 生成 .error 日志的文件
"error_file": "logs/err.log",
// 生成 .log 日志的文件
"out_file": "logs/out.log",
// 日志中每一行加个时间
"log_date_format": "YYYY-MM-DD HH:mm:ss"
}
}
然后修改 PM2 启动命令,重启:
package.json
"scripts": {
"dev": "cross-env NODE_ENV=dev ./node_modules/.bin/nodemon bin/www",
"prd": "cross-env NODE_ENV=production pm2 start bin/www",
"prd": "cross-env NODE_ENV=production pm2 start pm2.config.json",
},
- 访问 server,检查日志文件的内容(日志记录是否生效)
五、多进程启动
1、为什么要使用多进程
- 操作系统限制一个进程的内存;
- 无法充分利用机器全部内存;
- 无法充分利用多核 CPU 的优势。
2、多进程和 redis
- 多进程之间,内存无法共享;
- 多进程访问一个 redis,实现数据共享。