一、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的文件中找到我們要分析的線程,可以看到此線程的狀態,以及代碼運行到哪裏了,是否有死鎖等信息。