首先,使用top命令查看,可以看到Java进程cup的占用率很高,如下所示:
通过top命令,可以看到Java的pid是6240,确定进程id后,我们可以使用ps命令查看这个程序的线程信息。
命令:ps –mp 6240 –o THREAD,tid,time
其中tid是代码线程id,time代表这个线程已经运行的时间
由上图可以看到,cup占用率高的进程是6652和6653,把相应的进程id转成16进制,方便使用jstack查找
printf “%x\n” TID
使用jstack查看进程信息
命令:jstack TID | grep 19fc
可以看到这两个进程的编号是65和66
使用jstack命令,找到对应的进程,即可看到相应信息
如果以后遇到类似的问题可以先按照上面这种思路进行查看:
也可以通过jps -v找到对应的pid;
导出进程stack信息:
jstack -l [pid] >> [文件名]
eg:jstack -l 123456 >> 123.txt
打开导出的jstack文件进行查看,如果内容过多,也可以先通过一些jstack分析工具(如jca.jar)进行查看;