pm2-logrotate 隐藏的坑

写在前边:

服务器上使用pm2管理项目时,日志管理变得非常麻烦,知道pm2-logrotate后 安装启动后服务器磁盘空间直接爆炸,导致服务停机无法使用,排查后记录。

pm2-logrotate是一个npm管理模块

1. 安装命令

pm2 install pm2-logrotate

如果在服务器安装特别慢的话,需要配置淘宝源

npm config set registry https://registry.npm.taobao.org/

2. 查看pm2-logrotate默认的参数

pm2 conf pm2-logrotate

3. 设置参数命令

pm2 set pm2-logrotate:max_size 100M

命令设置具体的参数,支持的参数有以下:

  • Compress:是否通过gzip压缩日志

  • max_size:单个日志文件的大小

  • retain:保留的日志文件个数,比如设置为10,那么在日志文件达到10个后会将最早的日志文件删除掉

  • dateFormat:日志文件名中的日期格式,默认是YYYY-MM-DD_HH-mm-ss 注意是设置的日志名+这个格式,如果设置的日志名为main_out.log 则会生成 main_out.log_YYYY-MM-DD_HH-mm-ss.log名字的日志文件

  • rotateModule:会把pm2本身的日志也进行分割

  • workerinterval:设置启动几个工作进程监控日志尺寸,最小为1

  • rotateinterval:设置强制分割,默认值是 0 0 * * * ,意思是每天晚上0点分割

设置完毕后可以通过查看pm2-logrotate参数命令来查看是否修改成功

4. 配置完成后需要重启pm2(重要步骤,如果不重启可能会出现下面的问题)

pm2 restart all

5. 存在的问题

  • 利用默认参数进行分割时,项目中一直使用的文件由于前期未分割,文件大小比较大。如果觉得这部分日志文件有用,可以先备份,之后在对应pm2日志存放目录删除之后再进行分割。如果不删除大日志文件 进行日志分割后会将大文件分割,分割后的总体效果就是将大文件整体copy一份,如果服务器磁盘空间不足就会导致磁盘空间瞬间爆满,服务器上的服务都会异常。

  • 可以使用 df -h 来查看磁盘占用率,如果删掉某个大文件后,磁盘空间并未释放的情况下,可以利用重启服务,包括 pm2-logrotate 服务 以及 项目本身。使用命令 pm2 restart all

  • 如果上述操作都做完后,使用 df -h 发现磁盘空间仍没有释放:

    • 可以使用 lsof | grep deleted 来查看已经被删除但是还在被某个服务调用的文件(因为此时该文件仍然会占用磁盘空间)来找到对应的pid

    • 在确定该进程可以被 kill 掉之后,kill掉该进程即可释放磁盘空间

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值