PM2-Node进程管理工具

1,559 阅读2分钟

主要特性

1、内建负载均衡(使用Node Cluster集群)

2、后台运行

3、0秒停机重载

4、停止不稳定进程(避免无限循环)

5、远程控制和实时的接口API(Node模块允许和PM2的进程管理进行交互)

安装

npm install -g pm2

启动

  • 可直接启动入口文件,如下: pm2 start app.js
  • 也可以启动配置文件,如下
//process.config.js
module.exports = {
  apps : [{
    name: "app",
    script: "./app.js",
    log:"./logs",
    watch:true,//监听文件变化,自动重启,
    // instances:4,//设置多进程
    error_file:"./logs/err.log",
    out_file:"./logs/info.log",
    log_date_format:"YYYY-MM-DD HH:mm:ss",//给每行日志标记一个时间
    ignore_watch:[//不需要监听的文件
      "node_modules",
      "logs"
    ],
    env: {
      NODE_ENV: "development",
    },
    env_test: {
      NODE_ENV: "test",
    },
    env_stage: {
      NODE_ENV: "stage",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}

启动成功如下图:

配置自动说明

  • apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
  • name:应用程序名称
  • cwd:应用程序所在的目录
  • script:应用程序的脚本路径
  • log_date_format:给每行日志标记一个时间
  • error_file:自定义应用程序的错误日志文件
  • out_file:自定义应用程序日志文件
  • pid_file:自定义应用程序的pid文件
  • instances:设置多进程
  • min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
  • max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
  • cron_restart:定时启动,解决重启能解决的问题
  • watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
  • merge_logs:
  • exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
  • exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
  • autorestart:启用/禁用应用程序崩溃或退出时自动重启
  • vizion:启用/禁用vizion特性(版本控制)

其他命令

  • 重启:pm2 restart app.js / pm2 restart all / pm2 restart 进程号
  • 停止:pm2 stop app.j / pm2 stop all / pm2 stop 进程号
  • 杀死进程: pm2 delete 进程号/pm2 delete all
  • 列出所有进程:pm2 list
  • 查看日志:pm2 logs
  • 重启所有进程: pm2 restart all
  • 0秒停机重载进程: pm2 reload all

运行进程 其他指令:

  • pm2 start app.js -i max 根据有效CPU数目启动最大进程数目
  • pm2 start app.js -i 3 启动3个进程
  • pm2 start app.js -x 用fork模式启动 app.js 而不是使用 cluster
  • pm2 start app.js -x -- -a 23 用fork模式启动 app.js 并且传递参数 (-a 23)
  • pm2 start app.js --name serverone 启动一个进程并把它命名为 serverone
  • pm2 stop serverone 停止 serverone 进程
  • pm2 start app.json 启动进程, 在 app.json里设置选项
  • pm2 start app.js -i max -- -a 23 在--之后给 app.js 传递参数
  • pm2 start app.js -i max -e err.log -o out.log 启动 并 生成一个配置文件