Skip to content

Nodejs-PM2

背景:由于本人博客系统后台接口是用nodejs编写,因为nodejs是单线程的,所以一旦发生错误或异常,如果没有捕获,整个系统就会挂掉,这时候就需要重新启动服务器.

PM2

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

  1. pm2需要全局安装
npm install -g pm2
  1. 进入项目跟目录启动进程/应用
pm2 start app.js //入口文件启动
pm2 start ...config.js// 配置文件启动
js
//配置文件启动配置项
module.exports = {
  apps: {
    name: "app", // 项目名
    script: "app.js", // 执行文件
    cwd: "./", // 根目录
    watch: true, // 是否监听文件变动然后重启
    ignore_watch: [
      // 不用监听的文件
      "node_modules",
      "logs",
      "public",
    ],
    exec_mode: "cluster_mode", // 应用启动模式,支持fork和cluster模式
    instances: 1, // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max
    max_memory_restart: "500M", // 最大内存限制数,超出自动重启
    error_file: "./logs/app-err.log", // 错误日志文件
    out_file: "./logs/app-out.log", // 正常日志文件

    min_uptime: "60s", // 应用运行少于时间被认为是异常启动
    max_restarts: 30, // 最大异常重启次数,即小于min_uptime运行时间重启次数;
    autorestart: true, // 默认为true, 发生异常的情况下自动重启
    cron_restart: "", // crontab时间格式重启应用,目前只支持cluster模式;
    restart_delay: 60, // 异常重启情况下,延时重启时间
    env: {
      NODE_ENV: "production", // 环境参数,当前指定为生产环境 process.env.NODE_ENV
      REMOTE_ADDR: "app", // process.env.REMOTE_ADDR
    },
    env_dev: {
      NODE_ENV: "development", // 环境参数,当前指定为开发环境 pm2 start app.js --env_dev
      REMOTE_ADDR: "",
    },
    env_test: {
      // 环境参数,当前指定为测试环境 pm2 start app.js --env_test
      NODE_ENV: "test",
      REMOTE_ADDR: "",
    },
  },
};
  1. 列出所有进程/应用
pm2 list/ pm2 ls
  1. 停止进程
pm2 stop[id] //id可在pm2 list查看
  1. 查看进程/应用的资源消耗情况
pm2 monit
  1. 查看日志
pm2 logs
  1. 更多命令
可输入pm2 -h 自行查看

完毕~