以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。
根据top命令

发现PID为9162的java进程占用CPU高达201.6%,出现故障。
通过ps aux | grep PID命令。可以进一步看出,问题发生在hdfs写hbase过程中的io问题
首先显示线程列表:
ps -mp pid -o THREAD,tid,time
这里使用命令
ps -mp 9162 -o THREAD,tid,time

找到了耗时最高的线程13111、13085和13100
其次将需要的线程ID转换为16进制格式:
printf "%x\n" tid
这里使用命令 printf "%x\n" 13100
![]()
最后打印线程的堆栈信息:
jstack pid |grep tid -A30
此处使用命令 jstack 9162 >> java.txt导出堆栈信息,从中查找

此时已经发现问题所在。好吧 我并不理解。。。这特么是三方jar包的问题啊???
博客以实际故障为例,介绍定位和解决问题的方法。通过top命令发现PID为9162的Java进程占用CPU过高,用ps aux | grep PID命令确定问题在hdfs写hbase的io环节。还介绍显示线程列表、转换线程ID为十六进制及打印线程堆栈信息的命令,最终发现是三方jar包问题。
16万+

被折叠的 条评论
为什么被折叠?



