一、概述
PM2是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能。并且使用起来非常简单。
官方文档:https://pm2.keymetrics.io/docs/usage/quick-start/
主要功能:
- 日志管理;两种日志,pm2系统日志与管理的进程日志,默认会把进程的控制台输出记录到日志中;
- 负载均衡:PM2可以通过创建共享同一服务器端口的多个子进程来扩展您的应用程序。这样做还允许以零秒停机时间重新启动应用程序。
- 终端监控:可以在终端中监控应用程序并检查应用程序运行状况(CPU使用率,使用的内存,请求/分钟等)。
- SSH部署:自动部署,避免逐个在所有服务器中进行ssh。
- 静态服务:支持静态服务器功能
- 支持开发调试模式,非后台运行,pm2-dev start <appName>;
使用场合:
- supervisor是开发环境用。
- forever管理多个站点,每个站点访问量不大,不需要监控。
- nodemon 是开发环境使用,修改自动重启。
- pm2 网站访问量比较大,需要完整的监控界面。
主要特性:
- 内建负载均衡(使用Node cluster 集群模块)
- 后台运行
- 0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
- 具有Ubuntu和CentOS 的启动脚本
- 停止不稳定的进程(避免无限循环)
- 控制台检测
- 提供 HTTP API
- 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )
二、安装PM2
## 全局安装pm2
npm install pm2 -g
## 安装完成后,可用如下命令启动任何应用程序(Node.js,Python,Ruby,$ PATH中的二进制文件…):
pm2 start app.js
pm2 start app.js --name app
三、PM2基础命令
1.查看pm2管理的应用
pm2 list
2. 基础命令
启动进程:pm2 start <app_name|id|'all'|json_conf>
重启进程:pm2 restart <app_name|id|'all'|json_conf>
停止进程:pm2 stop <app_name|id|'all'|json_conf>
重载进程:pm2 reload <app_name|id|'all'|json_conf>
杀死进程:pm2 delete <app_name|id|'all'|json_conf>
## 比如启动express 可以在express根目录下
pm2 start bin/www
## 如果我们在后面加入watch参数,每当代码改变时即会自动重启,如下:
pm2 start bin/www --watch
3.查看进程详细信息
pm2 describe <id|app_name>
该命令可以查看工程运行目录,node与你新高版本,日志目录,项目git位置等
要监控日志,自定义指标,应用程序信息:
pm2 monit
4.无缝重启程序
pm2 reload all
5.开机自启动
## 保存当前管理应用程序状态
pm2 save
##生成自启动脚本
pm2 startup
## 禁用自启动
pm2 unstartup
6.日志管理命令
## 显示APP-NAME日志
pm2 logs APP-NAME
## JSON输出
PM2 logs --json
## 格式化输出
PM2 logs --format
## 刷新所有日志(清空)
pm2 flush
## 重新加载所有日志
pm2 reloadLogs
四、PM2集群模式(负载均衡)
群集模式是启动Node.js应用程序时的一种特殊模式,它启动多个进程并在它们之间对HTTP / TCP / UDP进行负载均衡。提高了整体性能(16核机器上的x10倍)和可靠性(在未处理错误的情况下更快地套接字重新平衡)。
以集群模式启动Node.js应用程序,该应用程序将利用所有可用的CPU:
pm2 start api.js -i <processes>
可以为’max’,-1(所有具有的cpu减1)或指定数量的实例开始。
如:pm2 start bin/www -i max
## 监视从命令行直接启动的所有进程:
pm2 monit
本文暂时没有评论,来添加一个吧(●'◡'●)