以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。
根据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包的问题啊???