pm2多进程合并日志

pm2开启多进程

pm2是一个能够开启多进程,处理高并发的环境

安装PM2

npm install pm2 -g

启动PM2

pm2 start xxx 

在这里插入图片描述

默认启动是单实例fork模式。甚至可以用来启动PHP等脚本语言,个人觉得,在非集群模式下用fork模式跑pm2启动的项目基本上就是废了,还不如不用pm2。

pm2 start xxx -i 0

在这里插入图片描述

(备注:cpu有几核就启动几个cluster进程,如果指定>0 就按指定数字启动进程,进程数最高不高于cpu核心数,在非集群(k8s环境下,已经提供多实例环境了,再开cluster意义不大了)环境强烈推荐使用cluster模式,利用pm2提供的负载均衡,充分利用cpu)

停止PM2进程

停止指定pm2启动的进程

pm2 stop xxx

停止所有pm2进程

pm2 stop all

删除PM2进程

删除指定启动的进程

pm2 delete xxx

删除所有启动进程

pm2 delete all

杀死进程

pm2 kill

与上面的 pm2 delete all 删除进程的区别就是kill是彻底杀死进程,进程号会从头开始计算,delete删除进程后,启动新进程会延续上次的进程号继续往上加
eg:

操作1

用delete强制删除进程
在这里插入图片描述

再次启动多进程后,注意看前面的id号
在这里插入图片描述

操作2

用kill 杀死进程
在这里插入图片描述
再次启动,发现id号已经从头开始计算了
在这里插入图片描述

重启PM2进程

PM2重启指定项目进程

pm2 restart xxx

PM2重启所有项目进程

pm2 restart all

可以实现平滑无感知重启,项目不会中断

日志

查看所有日志

pm2 logs

在这里插入图片描述

查看json格式日志

pm2 logs --json

在这里插入图片描述

写入日志文件的日志为json格式

pm2 start xxx -i 0 --log-type=json

在这里插入图片描述

合并日志

如果是fork模式,如果没有指定日志位置,pm2日志默认位置在
Linux/Mac:

/root/.pm2/logs/

Windows系统:

C:\Users\用户\.pm2\logs

注意1:如果用cluster模式,并且没有指定启动进程数,默认是主动合并进程日志,如果指定进程数,就会按进程数生成进程日志文件
默认是这样的:

在这里插入图片描述
如果是pm2 start xxx -i num启动,则会有进程日志文件
eg:我启动3个进程
在这里插入图片描述
生成日志是这样的
在这里插入图片描述

注意2:如果是fork模式,生成出来的日志和用-i 0启动是一样的没有进程日志

操作1:当确实需要用到指定进程数启动的话,又想合并日志,可以使用

pm2 start ./bin/www -i 3 --log-type=json --merge-logs -l --log /root/.pm2/logs/merge.log

在这里插入图片描述
合并后的日志(多进程的标准日志和错误日志合在一起了)
在这里插入图片描述
操作2:在多进程模式下,当想分开标准日志和错误日志的话,且合并多进程日志,可以使用

pm2 start ./bin/www -i 3 --log-type=json --merge-logs --output /root/.pm2/logs/out.log --error /root/.pm2/logs/error.log

在这里插入图片描述

清空日志

pm2 flush

在这里插入图片描述

轮询备份日志

安装pm2-logrotate

pm2 install pm2-logrotate

轮询备份日志

pm2 set pm2-logrotate:max_size 100M; 
pm2 set pm2-logrotate:retain 3

上面命令分别是:

  1. 当超过100M后备份
  2. 轮询3个日志文件,超过3个后,自动替换掉最前面的日志文件

默认是30S检查一次
详细配置进:官网地址

常用命令总结

命令 作用
pm2 start app.js 启动fork模式
pm2 start app.js -i num 启动cluster模式
pm2 restart app.js 重启应用
pm2 restart all 重启所有应用
pm2 stop app.js 停止项目
pm2 stop all 停止所有项目
pm2 delete app.js 删除项目进程
pm2 delete all 删除所有项目进程
pm2 kill 杀死所有项目进程
pm2 logs 查看所有pm2日志
pm2 flush 清空所有pm2日志
pm2 start app.js -i 0 --log-type=json 用json格式记录日志
pm2 start app.js -i 3 --log-type=json --merge-logs --output /path/xxx.log --error /path/xxx.log 用json格式记录且合并日志

猜你喜欢

转载自blog.csdn.net/sinat_15955423/article/details/111626671
pm2
今日推荐