【案例18】NC进程CPU利用率高分析方法

博客讲述了在NC应用启动master后,遇到CPU使用率持续高位的问题。通过ps命令定位到高CPU使用线程,转换线程ID为16进制,并分析javacore文件找出问题线程。最终确定问题源于处理离线消息的服务,解决方案是通过禁用离线消息来修复。
摘要由CSDN通过智能技术生成

问题描述

NC应用在启动master之后,发现master进程的cpu使用率始终100%+,一直居高不下。
在这里插入图片描述

问题分析

  • 查找CPU高的进程
ps -mp 25812 -o THREAD,tid,time |sort -n -k 2
ps -mp 25812 -o THREAD,tid,time |awk '/root/ && $2>50 {print $0}'  --输出大于50的线程

根据进程的PID找到 该进程中CPU使用率最高的线程号 26001 使用了72%
在这里插入图片描述

  • 生成JAVACORE文件

生成进程当前线程信息 --javacore

kill -3  <pid>  
  • 将10进制转换为16进制

把线程id从10进制转换为16进制

printf "%x\n" <tid>

在这里插入图片描述

  • 分析线程堆栈

在javacore中寻找对应线程信息(搜索转换的16进制的线程信息0x)

cat javacore |grep 0x6591 -C10

在这里插入图片描述

  • NMC监控
    结合nmc监控中的master的服务线程监控
    在这里插入图片描述
    判定是消息服务中处理离线消息的导致的

解决方案

出补丁解决,禁用离线消息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值