初识PM2

概述

这篇文章用来记录第一次使用PM2的感受,和使用nodemon到PM2的区别,及PM2所带来的好处。


安装

1
npm i pm2 -g --registry https://registry.npm.taobao.org

安装好之后,修改package配置文件

1
"prd": "cross-env NODE_ENV=production pm2 start bin/www",

运行 npm run prd 服务就会跑起来,并且会打印出一个表格,上面会记录服务所在进程的信息👇,这样就算是成功跑起来了

1
2
3
4
5
6
7
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬─────────
─┐
id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼─────────
─┤
│ 0 │ www │ fork │ 0 │ online │ 0% │ 28.2mb │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

进程守护

nodemon 进程崩毁后就不能访问了,pm2 遇到进程崩溃会自动重启

nodemon 服务报错之后,可会导致整个页面无法运行,这样测试就不得不停下手头的工作开始摸鱼,你们开发又写bug啦。pm2 在服务报错之后,进程依然在后台运行,只有报错页面出现问题,其他页面可以正常使用。在错误与正确之间,pm2 会自动重启。这就是进程守护机制。


基础配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"apps": {
"name": "weather-service", // 服务名称
"script": "bin/www", // 启动脚本路径
"watch": true, // 是否开启自动重启
"ignore_watch": [
"node_modules",
"logs"
],
"error_file": "logs/err.log", // 错误日志文件路径
"out_file": "logs/out.log", // 输出日志文件路径
"log_date_format": "YYYY-MM-DD HH:mm:ss", // 日志文件时间戳
"instances": 4 // 进程数量
}
}

这些功能对PM2来说九牛一毛,还有很多高级配置没有用到,PM2很有搞头,以后尝试在项目中进一步使用。