【每日一题NO.67】说下你对PM2的理解
共 2336字,需浏览 5分钟
·
2021-10-25 04:57
话说,这是我携程面试遇到的真题呀……太难了啊。
pm2
pm2官网[1]
pm2
是一个带有负载均衡功能的 node
应用的进程管理器。
我们都知道 node.js 是单进程执行的,当程序因出现错误而死掉之后需要能够自动重启,这时候就需要 pm2
了。
其他进程管理工具如 forever
等。
主要特性
启动多子进程,充分使用 CPU 子进程之间负载均衡 0 秒重启 界面友好 提供进程交互接口
他是依据什么重启服务的?
pm2
采用 心跳检测 查看子进程是否处于活跃状态:
每隔数秒向子进程发送心跳包,子进程如果不回复,那么调用 kill
杀死这个进程,然后再重新 cluster.fork()
一个新的进程。
子进程可以监听到错误事件,这个时候可以发送消息给主进程,请求杀死自己,并且主进程此时重新调用 cluster.fork()
一个新的子进程。
拥有的能力
日志管理
:有两种日志,pm2
系统日志与管理的进程日志,默认会把进程的控制台输出记录到日志。负载均衡
:pm2
可以通过创建共享同一服务器端口的多个子进程来扩展你的应用程序。这样做还允许以零秒停机时间重新启动应用程序。终端监控
:可以在终端中监控应用程序并检查应用程序运行状况(如:CPU
使用率、使用的内存、请求分钟数等等)。SSH 部署
:自动部署,避免逐个在所有服务器中进行ssh
。静态服务
:支持静态服务器功能。支持 开发调试
模式:非后台运行,执行pm2-dev[2]命令:pm2-dev start app.js
常用命令
启动服务
启动指定应用
pm2 start [options]
举例:
pm2 start binary-file -- --port 1520
启动一个 node 程序
启动 app.js 应用
pm2 start app.js
启动进程并指定应用的程序名
启动程序,并设置应用 name
为 my-api
pm2 start app.js --name my-api
添加进程监视
监听模式启动,当文件发生变化,自动重启。
指定程序名的情况下
pm2 start app.js --name 程序名 --watch
未指定程序名的情况下
pm2 start app.js --watch
列出所有进程
pm2 list
效果展示:
简写:
pm2 ls
从进程列表中删除进程
pm2 delete [appname] | id
指定进程名删除
pm2 delete app
指定进程 id 删除
pm2 delete 0
如果修改了应用配置行为,需要先删除应用,重新启动后方才会生效, 如修改脚本入口文件
删除进程列表中所有进程
关闭并删除应用
pm2 delete all
查看某个进程具体情况
pm2 describe app
查看进程的资源消耗情况
监控各个应用进程 cpu
和 memory
使用情况
pm2 monit
重启进程
同时杀死并重启所有进程,短时间内服务不可用,生成环境后慎用
pm2 restart app.js
重启所有进程
pm2 restart all
重新启动所有进行程, 0
秒重启,始终保持至少一个进程在运行
pm2 reload app.js
以群集横式重新加载所有应用程序
pm2 gracefulReload all
查看进程日志
根据指定应用名查看应用志
pm2 log3 [Name]
根据指定应用 ID
查看应用日志
pm2 logs [ID]
查看所有进程的日志
pm2 logs all
显示应用程序详细信息
显示指定应用详情
pm2 show [options]
根据 name
查看
pm2 show [Name]
根据 id
查看
pm2 show [ID]
停止指定应用
停止指定应用
pm2 stop [options]
停止所有应用
pm2 stop all
根据应用名停止指定应用
pm2 stop [AppName]
根据应用 id
停止指定应用
pm2 stop [ID]
杀掉 pm2
管理的所有进程
pm2 kill
启动静态服务器
将目录 dist
作为静态服务器根目录,端口为 8080
pm2 serve ./dist 8080
集群模式启动
启用群集模式(自动负载均衡):
-i
:表示number-instances
实例数量max
:表示pm2
将自动检测可用CPU
的数量 可以自己指定数量
pm2 start app.js -i max
开发模式启动,即不启用后台运行
pm2-dev start app.js
设置 pm2 开机自启
开启启动设置,执行命令后按照提示输入指定代码即可
pm2 startup centos # 此处是 `CentOS` 系统,其他系统替换最后一个选项。
系统的可选项: ubuntu
, centos
, redhat
, gentoo
, systemd
, darwin
, amazon
保存设置
pm2 save
参考资料
pm2官网: https://pm2.keymetrics.io/
[2]pm2-dev: https://pm2.keymetrics.io/docs/usage/pm2-development/
所有《每日一题》的 知识大纲索引脑图 整理在此:https://www.yuque.com/dfe_evernote/interview/everyday
你也可以点击文末的 “阅读原文” 快速跳转