1、简介
对于后台进程的管理,常用的工具是crontab,可用于两种场景:定时任务和常驻脚本。关于常驻脚本,今天介绍一款更好用的工具:pm2,基于nodejs开发的进程管理器,适用于后台常驻脚本管理,同时对node网络应用有自建负载均衡功能。官方的说法,pm2 是一个带有负载均衡功能的Node应用的进程管理器,个人认为,并不准确,因为pm2支持多种语言,只是对于除node之外的其他进程无负载均衡的能力。
2、为什么要用pm2
对于线上项目,如果直接通过 node app
来启动,因为 node 是单线程的,所以如果报错了可能会使项目直接停止,从而导致整个服务崩溃。
一般监控 node 有几种方案:
supervisor: 一般用作开发环境的使用;
forever: 管理多个站点,一般每个站点的访问量不大的情况,不需要监控;
PM2: 网站的访问量比较大,需要完整的监控页面。
3、pm2特点
后台运行:普通启动方式:node index.js,关闭终端就结束进程; pm2可以后台运行,终端关闭不影响。
自动重启:可以监听某些文件改动,自动重启。
停止不稳定的进程:限制不稳定的重启的次数,达到上限就停止进程。
0 秒停机重启:集群模式下,可以达到重启时不停止服务。
简单日志管理:pm2可以收集日志,并有插件配合进行管理。后面会提到。
自动负载均衡:cluster模式下,会自动使用轮询的方式达到负载均衡,从而减轻服务器的压力。
提供实时的接口:pm2插件提供实时的接口,返回服务器与进程的信息,后面会提到。
集成管理:对于多个进程,不同环境,可以统一配置,方便管理。
4、安装
安装epel源
[root@10-60-249-255 ~]# yum install epel-release -y
需要先安装nodejs
[root@10-60-249-255 ~]# yum install nodejs -y
需要先安装npm
[root@10-60-249-255 ~]# yum -y install npm
设置淘宝镜像和安装淘宝cnpm
[root@10-60-249-255 ~]# npm config set registry https://registry.npm.taobao.org
[root@10-60-249-255 ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org
安装升级node版本工具
[root@10-60-249-255 ~]# npm install -g n
安装pm2工具
[root@10-60-249-255 ~]# npm install -g pm2
5、启动进程
app.js是node的启动文件,控制台会有如下打印。
其中app name 和id都是这个进程的标识,可以对他们进行别的操作,比如stop,delete等。
mode:进程模式,cluster或fork。cluster有多个进程,而fork只有一个。
status:进程是否在线。
restart:重启次数。
uptime:运行时间。
cpu:cpu占用率。
mem:内存占用大小。
6、pm2工具帮助使用
pm2 start app.js #启动app项目
pm2 list #列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。
pm2 monit #监视每个node进程的CPU和内存的使用情况
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 #杀死全部进程
欢迎大家扫码关注:
本公众号只写原创,不接广告、不接广告、不接广告。下期小伙伴想学习什么技术,可以私信发我吆。