如何在linux环境排查生产环境java线程阻塞问题
开胃小菜
在进入主题前我们先看一下windows的一个小命令 注:在本地有java环境开启的时候执行
win+r 输入cmd 跳转命令行 输入如下指令
jvisualvm
这个小东西有很多功能,能让你看线程,堆,cpu的运行,执行垃圾回收,堆dump等等
进入主题,这里以我自己的服务器为例子
这里有很多方法找到你的线程pid
一:top命令
top
二.jps
jps
找到pid后我们可以执行
top -Hp {pid}
上图我们可以找到占用cpu最多的java线程,我们执行命令让pid变成16位
printf "%x\n" #{pid}
然后执行命令看这个线程的堆栈信息 这个pid用10进制就行
jstack -l #{pid}
注意!!!!上面jstack打印的pid用的是主线程的pid 这样打出来的堆栈信息 再通过刚才转换的16进制去找 就能找到当前java线程占用cpu最高的方法