使用pm2进程管理工具管理NodeJS应用

pm2是什么?

官方的说法,pm2 是一个带有负载均衡功能的Node应用的进程管理器。

为什么要用pm2?

因为node.js 是单进程,进程被杀死后整个服务就挂了,所以需要进程管理工具。pm2可疑让你的独立代码利用全部的服务器上的所有 CPU,并保证进程永远都活着,0 秒的重载。

环境

保证有node.js 的环境

安装
npm install -g pm2

如果nodejs安装的路径不在/usr/local/bin/下,需要配置一下软链接:

ln -s  /usr/sbin/nodejs/bin/pm2    /usr/local/bin/
配置与运行

pm2 配置方式

  1. 命令行方式
pm2 start xxx.js --name xxxx --interpreter xxxx

更多选项可查看pm2 --help获取;
2. 配置文件方式
pm2配置文件方式支持yml与json格式,以下是一个json配置文件:

{
  "apps": [{
    "name": "firekylin",
    "script": "production.js",
    "cwd": "/usr/local/src/firekylin",
    "exec_mode": "fork",
    "max_memory_restart": "1G",
    "autorestart": true,
    "node_args": [],
    "args": [],
    "env": {

    }
  }]
}
  • name 应用进程名称;
  • script 启动脚本路径;
  • cwd 应用启动的路径;
  • exec_mode 应用启动模式,支持fork和cluster模式;
  • max_memory_restart 最大内存限制数,超出自动重启;
  • autorestart 默认为true, 发生异常的情况下自动重启;
  • args 传递给脚本的参数;
  • env 环境变量,object类型,如{“NODE_ENV”:“production”, “ID”: “42”};
    其他还有:
  • interpreter 指定的脚本解释器;
  • interpreter_args 传递给解释器的参数;
  • instances 应用启动实例个数,仅在cluster模式有效,默认为fork;
  • watch 监听重启,启用情况下,文件夹或子文件夹下变化应用自动重启;
  • ignore_watch 忽略监听的文件夹,支持正则表达式;
  • 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运行时间重启次数;
  • restart_delay 异常重启情况下,延时重启时间;

等等;

运行

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

更多内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值