# PM2 相关

  • 进程守护,系统崩溃自动重启
  • 启动多进程,充分利用 CPU 和内存
  • 自带日志记录功能

# 下载安装

使用命令 npm install pm2 -g;可以使用 pm2 --version 查看版本;

# 启动

通过 pm2 启动服务: pm2 start 后面可以跟启动的文件名,也可以跟启动的配置文件;

// 在 package.json 中进行配置下面命令
// app.js 为项目入口文件;如果是 koa 或者 express 项目,是 bin/www
  "scripts": {
    "start": "node bin/www",
    "prd": "cross-env NODE_ENV=production pm2 start app.js",
  },

启动之后,控制台会打印启动的结果: 在这里插入图片描述

# 查看启动列表

可以使用命令 pm2 list 查看启动的应用:

在这里插入图片描述

# 重启服务

可以使用 pm2 restart id/name;比如上面我们启动的服务,有 id 和 name 标识一个服务: 在这里插入图片描述

# 停止或删除服务

使用命令 pm2 stop id/name, pm2 delete id/name;

在这里插入图片描述

在这里插入图片描述

# 查看服务信息

使用命令 pm2 info id/name 在这里插入图片描述

# 查看服务日志

使用命令 pm2 log id/name 在这里插入图片描述

# 监听服务更详细的信息

使用命令 pm2 monit id/name 在这里插入图片描述

# 进行守护

如果我们使用 node app.js 或者 nodemon app.js,如果服务出现问题,服务崩溃就不能访问了,pm2 遇到进程崩溃,会自动重启服务

# 配置

  • 新建 pm2 配置文件(包括进程数量,日志文件目录等)
  • 修改 pm2 启动命令,重启
{
  "apps": {
    "name": "blog-server",
    "script": "bin/www",
    "watch": true, // 监听文件变化自动重启
    "ignore_watch": [
      "node_modules",
      "logs"
    ],
    // 开启 4 个进程,pm2 会实现负载均衡
    "instances": 4,
    // 输出错误日志
    "error_file": "logs/err.log",
    // 自定义日志
    "out_file": "logs/out.log",
    // 日志时间戳
    "log_date_format": "YYYY-MM-DD HH:mm:ss"
  }
}

日志内容:

2020-02-19 16:52:41: GET /api/user/login-test - 1ms
2020-02-19 16:52:41:   --> GET /api/user/login-test 404 3ms -

然后修改项目配置:

  "scripts": {
    "start": "node bin/www",
    "prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json",
  },

评 论:

更新: 11/21/2020, 7:00:56 PM