PM2
-
PM2的核心价值(npm run prd 即可)
- 进程守护, 系统崩溃自动重启(一直重启)
- 启用多进程, 充分利用CPU和内存
- 自带日志记录功能(之前的console.log 和 console.error会自动记录在配置的文件内)
-
PM2介绍
下载安装
npm i pm2 -g
下载
pm2 --version
查看版本-
基本使用
- 配置启动命令:
"prd": "cross-env NODE_ENV=dev pm2 start ./app.js"
- 启动完, 会告知pm2配置, 且交还控制台(nodemon会在前台运行)
- 配置启动命令:
常用命令
pm2 start ...
启动项目
pm2 list
在控制台看到pm的配置列表
pm2 restart <AppName>/<id>
根据appname/id(pm的配置列表有), 重启某个服务
pm2 stop <AppName>/<id>
停止
pm2 delete <AppName>/<id>
删除
pm2 info <AppName>/<id>
服务信息
pm2 log <AppName>/<id>
查看进程日志
pm2 monit <AppName>/<id>
查看进程cpu和进程的信息-
常用配置
-
新建pm2的配置文件(包括进程数量, 日志文件目录等)
{ "apps": { "name": "pm2-server", // 启动时候, 进程名称 "script": "app.js", // 启动目录文件 "watch": true, // 监听文件变化, 自动启动 "ignore_watch": [ "node_modules", // 忽略node_modules "logs" // 忽略logs文件变化 ], "instances": 4, // 多进程 "error_file": "logs/err.log", // 错误日志写入 "out_file": "logs/out.log", // 输出日志 "log_date_formate": "YYYY-MM-DD HH:mm:ss" // 输出日志时间格式 } }
pm2.png
-
2. 修改pm2启动命令, 重启
1. 修改启动命令: `"prd": "cross-env NODE_ENV=dev pm2 start pm2.conf.json"`
2. 重启
3. 访问server, 检查日志文件内容(日志文件是否生效)
1. 就已经有访问记录
5. pm2的多进程
1. 多进程优势, 单个进程内存的内存受限(内存充分使用), 充分发挥多核CPU的优势
2. 多进程劣势, 数据不共享, redis解决
3. 自动负载均衡, 具体表现在, 日志文件按照进程的响应不同, 生成多个日志文件
![pm2多进程.png](https://upload-images.jianshu.io/upload_images/4363630-1bc626c388518a5f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)