MQ 服务占用 CPU 太高

MQ 服务占用 CPU 太高

1. 出现问题

  • 测试环境中,匹配业务运行时会出现响应缓慢或超时失败的情况

2. 分析过程

1. 通过日志定位问题服务

  • 根据匹配业务查询日志,发现查询房间信息的 Redis 缓存为空时会超时,这可能是由于缓存未被添加或中途被删除所致
    • 多次新开房间测试,缓存添加正常,排除添加缓存业务问题
    • 删除缓存的业务:
      • 前端关闭或 IM 端通知关闭:日志正常,排除
      • 心跳两次未更新(定时检测):一系列业务操作后、发布到 RabbitMQ 异步更新,RabbitMQ 服务的日志显示更新缓慢,更新不及时导致定时检测误判异常并删除缓存
  • 确定异常服务为 RabbitMQ 服务

2. 查询异常服务进程、CPU、内存、IO、锁和网络

  • 直接查询 RabbitMQ 的服务进程未发现问题:ps -ef | grep 'rabbitmq'

  • 使用 top 然后按 P 命令,然后使用cat /proc/cpuinfo| grep "processor"| wc -l查到机器是 32 核,CPU 负载不高:10 / 32 = 0.3125

  • 但是 RabbitMQ 的业务处理服务 rabbitmq 占用比较高:117.3%(90 - 300 % 之间)
    在这里插入图片描述

  • free -m:内存还有 5315M 空闲

  • df -l:磁盘占用很高 89%(同时还在涨)
    在这里插入图片描述

  • 阿里云流量监控未发现服务器流量异常

  • 使用 jstack、jmap、jstat 命令,在 /home/webadmin 目录下查 JVM dump 日志,JVM 内存状态正常,非 GC 原因

  • 因此问题就是

    • RabbitMQ 占用 CPU 太高
    • 磁盘占用太高

3. CPU 占用过高分析

  • 进入 rabbitmq 消息存储目录,发现该目录占用磁盘过高,猜测磁盘占用过高导致 IO 读取异常
  • 尝试清理磁盘无用数据后,速度明显变快,但不久后磁盘再次快速增长
  • 问题所在:找到磁盘占用过多的服务

3. 解决方案

  • 首先使用 root 权限,进入根目录查询大文件:du -sh * \ --exclude="proc" \ --exclude="data*" | grep G,未找到
  • 然后查询隐藏文件:du -sh .[!.]*
  • 发现其他项目组的Android包放在此目录,占用空间巨大
  • 沟通后将包打包至其他位置,同时删除Android包,磁盘占用恢复正常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值