一、top看进程
查看服务器上的cpu和内存等使用情况。
shift+p: 进程会按照cpu使用率高的来排序。
shift+m: 进程会按照内存占用情况高的来排序。
二、top看线程
通过top查出异常的进程pid后,我们来看下进程的线程的运行情况:
top -Hp pid
从其中,我们可以看到哪些线程的使用情况不太正常。得到系统层面的线程nid。
三、jstack线程dump
接下来我们通过jstack命令dump出目前的进程情况。
jstack pid > a.dump
四、找到要分析的线程
jstack文件中存储的线程id,是16进制的。那么我们首先需要将之前在操作系统层面查出的线程id用16进制显示出来。
printf ‘%x’ number
然后呢在我们的jstack文件中搜索上面得到的16进制n,命令中-A是显示下文多少行:
jstack pid | grep -A 20 n
五、目标:分析线程
从jstack的文件中找到我们要分析的线程,可以看到此线程的状态,以及代码运行到哪里了,是否有死锁等信息。