介绍
PM2是一个带有负载均衡功能的Node应用的进程管理器。PM2可以利用服务器上的所有CPU,并保证进程永远都活着,0秒的重载,部署管理多个Node项目。PM2是Node线上部署完美的管理工具。
特性
- 内建负载均衡(使用Node cluster 集群模块)
- 后台运行
- 0秒停机重载(维护升级的时候不需要停机).
- 具有Ubuntu和CentOS 的启动脚本
- 停止不稳定的进程(避免无限循环)
- 控制台检测
- 提供 HTTP API
- 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )
安装pm2
npm install pm2 -g # 全局安装。
运行
pm2 start index.js --name swagger-ui # 命名进程
其他启动方式:
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 # 启动 并 生成一个配置文件,你也可以执行用其他语言编写的app ( fork 模式): pm2 start my-bash-script.sh -x --interpreter bash pm2 start my-python-script.py -x --interpreter python pm2 start app.js --max_memory_restart 1024M : 当内存超过1024M时自动重启。 如果工程中有比较棘手的内 存泄露问题,这个算是一个折中方案。
pm2常用命令
npm restart [name or id] : 重启服务。 npm reload [name or id] : 和rastart功能相同,但是可以实现0s的无缝衔接;如果有nginx的使用经验,可以 对比nginx reload指令。 pm2 monit : 对服务进行监控。
参考资料