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的文件中找到我们要分析的线程,可以看到此线程的状态,以及代码运行到哪里了,是否有死锁等信息。

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