pm2 进程守护者,保障nodejs的稳定运行

当初写了个node服务, 发现一旦异常服务就挂了, 而且没找到什么好方法包住异常, 后面偶然中看到pm2, 发现是个node服务的配套神器

1. 什么是pm2

  • pm2是守护nodejs进程后台运行的,异常停止后可以自动重启,
  • 也可以袒护其它第三方的命令行程序,比如php的命令行

2. 为什么要用pm2

因为pm2可以方便快捷的帮我们管理命令行程序, 并且有良好的日志和监控机制

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

3. pm2安装

命令行安装 pm2
npm install -g pm2

4. pm2的基本命令

  • pm2 start xxx -i 4 #后台运行pm2,启动4个app.js
    也可以把’max’ 参数传递给 start
    正确的进程数目依赖于Cpu的核心数目
  • pm2 start xxx --name my-api # 命名进程
  • pm2 list :显示所有进程状态
  • pm2 monit:监视所有进程
  • pm2 logs : 显示所有进程日志
  • pm2 stop all: 停止所有进程
  • pm2 restart all : 重启所有进程
  • pm2 reload all : 0秒停机重载进程 (用于 NETWORKED 进程)
  • pm2 stop xxx : 停止指定的进程
  • pxm2 restart xxx : 重启指定的进程
  • pm2 startup : 产生 init 脚本 保持进程活着
  • pm2 web :运行健壮的 computer API endpoint
  • pm2 delete xxx: 杀死指定的进程
  • pm2 delete all : 杀死全部进程

5. 启动脚本

pm2可以直接执行json格式的启动脚本, 脚本是数组类型的, 可以一个脚本启动多个服务

  • name: 应用名称
  • script: 启动脚本路径
  • cwd: 应用启动的路径
  • args: 传递给脚本的参数
  • interpreter: 指定的脚本解释器
  • interpreter_args: 传递给解释器的参数
  • instances: 应用启动实例个数,仅在cluster模式有效,默认为fork
  • exec_mode: 应用启动模式,支持fork和cluster模式
  • watch: 监听重启,启用情况下,文件夹或子文件夹下变化应用自动重启
  • ignore_watch: 忽略监听的文件夹,支持正则表达式
  • max_memory_restart: 最大内存限制数,超出自动重启
  • env: 环境变量,object类型,如{“NODE_ENV”:“production”, “ID”: “42”}
  • log_date_format: 指定日志日期格式,如YYYY-MM-DD HH:mm:ss
  • error_file: 记录标准错误流,$HOME/.pm2/logs/XXXerr.log),代码错误可在此文件查找
  • out_file: 记录标准输出流,$HOME/.pm2/logs/XXXout.log),如应用打印大量的标准输出,会导致pm2日志过大
  • min_uptime: 应用运行少于时间被认为是异常启动
  • max_restarts: 最大异常重启次数,即小于min_uptime运行时间重启次数
  • autorestart: 默认为true, 发生异常的情况下自动重启
  • cron_restart: crontab时间格式重启应用,目前只支持cluster模式
  • force: 默认false,如果true,可以重复启动一个脚本。pm2不建议这么做
  • restart_delay: 异常重启情况下,延时重启时间

例如:

[{
  "name": "nodejs 画图服务",
  "args": "",
  "script": "./post.js",
  "exec_interpreter": "/usr/local/bin/node",
  "exec_mode": "fork",
  "max_memory_restart": "400M"
}]
发布了74 篇原创文章 · 获赞 49 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_34208844/article/details/88696236