java線上環境分析特定線程運行情況

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章