张念磊的博客

后端技能 - 使用jstack命令定位JVM异常

2020-08-10

[toc]

2020/8/1

一. 找到出错的服务

docker 部署的方式

找到docker服务的pid

1
docker ps

进入docker

1
docker exec -it {pid} /bin/bash

先使用jps命令查看运行的java应用

jstack命令

1
jstack -l 28367

2020/8/10

jstack主要用来查看某个Java进程内的线程堆栈信息

  1. jps 查看java进程pid

  2. top -Hp pid 找出该进程内最耗费CPU的线程

  3. printf “%x\n” 1787 得到十六进制值为6fb
  4. jstack pid > file.log 通过jstack 把该进程的所有线程堆栈打印到file.log中
  5. vi file.log 打开文件搜索 6fb 找到具体出问题的代码

jstack统计线程数

1
/opt/java8/bin/jstack -l 28367 | grep 'java.lang.Thread.State' | wc -l

扫描二维码,分享此文章