问题描述
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的服务线程监控
判定是消息服务中处理离线消息的导致的
解决方案
出补丁解决,禁用离线消息。