如何使用pm2

399 阅读3分钟

本文用来记录自己使用pm2的过程,如有错误敬请指正!!!

PM2作用:PM2 是一个带有负载均衡功能的 Node 应用的进程管理器。 对于nodejs来说,他是使用javascript开发的,所以自然也是单进程执行的程序的,那么当程序出现错误死掉之后需要能够自动重启,这时候就需要PM2了。

它可以充分利用计算机的多cup能力,来监听node运行时候资源占用情况,以及输出日志,负载均衡等等。

下面来看如何初步使用PM2

  1. 首先默认你的电脑或者服务器中安装了node。
  2. 安装PM2
    npm i pm2 -g
  1. 使用pm2 启动相应服务
    // 例如我在这写了一个打印日志的js文件
    // log.js
    console.log(1);
    
    // 在pm2中启动node服务
    pm2 start log.js
    

出现以下内容证明当前服务启动成功 image.png

  1. 接下来我们使用pm2 logs查看pm2跑起来项目的进程id以及名称,以及日志文件位置

image.png

  1. 也可以直接使用ls ~/.pm2/logs 直接查看日志文件名称,启动的服务进程名称-out.log,或者,启动的服务进程名称-error.log。其中out.log 代表正常日志,error.log代表异常日志。

image.png

  1. 既然知道了文件内容,那我们就可以查看使用 cat ~/.pm2/logs/test-out.log 命令查看对应日志的内容。

上面我们说了初步使用的方法,这里就再记录下使用pm2自动手动重启进程吧。

  1. 当文件更新我们需要看到新内容这个时候重启服务就是我们最常用的功能了
    // 这时我们就需要使用 --watch 来监听这个项目是否有更新
    pm2 start log.js --watch

通过我们改变logs.js里面的日志可以看到我们日志由2,改为3时,日志内容也发生了变化,而不再是需要手动重启node服务

image.png

  1. 如果有特殊需求需要隔多久重启一次就可以使用
` pm2 start 需要启动的服务 --cron-restart "重第几秒时候/每次间隔秒数 * * * * *" `
  1. 当需要指定内存超过多少时重启释放内存pm2 start 需要启动的服务 --max-memory-restart 需要限制的阈值
    // 例如 log.js 设置内除超过100m重启
    pm2 start log.js --max-memory-restart 100M

image.png

  1. 不需要自动重启情况pm2 start 项目名称 --no-autorestart

pm2 做负载均衡

  1. 可以使用 pm2 start 服务名称 -i 使用cpu数量 来设置负载均衡。
// 启动最大可以用进程
pm2 start log.js -i max
// 启动指定cpu数量进程
pm2 start log.js -i 2
  1. 动态改变进程数pm2 scale 进程名称 需要改变的数量
// 改变为指定数量进程,如改变为2个进程
pm2 scale log 2
// 若需要原基础上加进程数,则可以使用+号,例如原基础上加一个进程
pm2 scale log +1

PM2性能监控

  1. pm2 查看性能监控可以使用 pm2 monit命令

image.png

如何删除进程

  1. 使用pm2 delete 进程id删除。