01月13, 2018

Node进程管理器PM2的使用

PM2是一个带有负载均衡功能的Node应用的进程管理器,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单,本文主要总结一下PM2的使用方法 。官方文档请移步:PM2官方地址

1、PM2的主要特性

  • 内建负载均衡(使用Node cluster 集群模块)
  • 后台运行
  • 0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
  • 具有Ubuntu和CentOS 的启动脚本
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

2、PM2的安装

全局安装:

npm install -g pm2

3、PM2安装目录介绍

pm2安装好后,会自动创建下面目录

  • $HOME/.pm2 说明:包含所有PM2相关文件
  • $HOME/.pm2/logs 说明:包含所有应用的日志
  • $HOME/.pm2/module_conf.json 说明:包含所有模块的配置文件
  • $HOME/.pm2/modules 说明:包含所有模块内容
  • $HOME/.pm2/pids 说明:包含所有应用的pid
  • $HOME/.pm2/pm2.log 说明:PM2的日志
  • $HOME/.pm2/pm2.pid 说明:PM2自身的pid
  • $HOME/.pm2/pub.sock 说明:可发布事件的Socket文件- $HOME/.pm2/rpc.sock 说明:远程命令的Socket文件
  • $HOME/.pm2/touch 说明:程序安装时间,时间戳,如:1519821375036,转换为时间就是:2018-02-28 20:36:15

4、PM2启动参数介绍

  • --watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件
  • -i --instances:启用多少个实例,可用于负载均衡。如果-i 0 或者-i max ,则根据当前机器核数确定实例数目
  • --max-memory-restart 20M:在超过使用内存20M上限后自动重启
  • --ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""
  • -n --name:应用的名称,查看应用信息的时候可以用到
  • -o --output <path>:标准输出日志文件的路径
  • -e --error <path>:错误输出日志文件的路径
  • --interpreter <interpreter>:the interpreter pm2 should use for executing app (bash, python...)。比如你用的coffee script来编写应用

5、PM2常用命令介绍

  • pm2 start app.js -i 4:开启4个进程
  • pm2 start app.js -i max:根据机器CPU核数,开启对应数目的进程
  • pm2 start app.js --name myapp:以myapp命名启动进程,如果--name参数没有设置,默认的进程名字为js文件的名字,如app.js启动之后,进程名称就是app
  • pm2 list:显示所有进程状态
  • pm2 monit:监视所有进程
  • pm2 logs :显示所有进程日志
  • pm2 stop all:停止所有进程
  • pm2 restart all:重启所有进程
  • pm2 reload all:0秒停机重载进程 (用于 NETWORKED 进程)
  • pm2 stop id|name:根据ID或NAME停止指定的进程
  • pm2 restart id|name:根据ID或NAME重启指定的进程
  • pm2 delete id|name:根据ID或NAME杀死指定的进程
  • pm2 delete all:杀死全部进程
  • pm2 start app.js -x:用fork模式启动app.js而不是使用 cluster
  • pm2 start app.js -x -- -a 23:用fork模式启动 app.js 并且传递参数 (-a 23)

6、PM2开机自动启动

开机启动细节可参考官方文档:PM2 开机启动说明,主要过程如下:

①、保存当前进程状态:

使用命令pm2 save保存当前进程状态

②、使用开机启动命令:

PM2针对不同操作系统的命令如下:

  • systemd: Ubuntu >= 16, CentOS >= 7, Arch, Debian >= 7
  • upstart: Ubuntu <= 14
  • launchd: Darwin, MacOSx
  • openrc: Gentoo Linux, Arch Linux
  • rcd: FreeBSD
  • systemv: Centos 6, Amazon Linux

③、进一步执行命令:

若步骤②生成了新的开机启动命令,将生成的命令粘贴到控制台执行,搞定,若没有生成新的命令,那就是执行成功了。强烈建议运行完成之后,重启机器,看是否设置成功。

7、远程部署

暂时没用到,想知道的可参考官方说明:PM2远程部署说明

8、更新PM2

①、保存进程状态:

pm2 save

②、使用NPM更新:

npm install pm2@latest -g

③、更新进程:

pm2 update

9、PM2编程接口

如果想把PM2的进程监控,跟其他自动化流程整合起来,可以使用PM2的编程接口,细节可参考官方文档:PM2 API说明

10、模块扩展系统

PM2支持第三方扩展,比如常用的log、rotate等,细节可参考官方文档:PM2 模块使用说明

以上就是使用PM2过程中暂时性的总结,以后用到其它内容会后续补充。

本文链接:https://www.shaobin.wang/post/3.html

Comments