JohnShen's Blog.

Java进程CPU高负载排查

字数统计: 217阅读时长: 1 min
2019/07/30 Share

Arthas 排查

怕麻烦的话,直接使用Arthas排查,具体的线程排查命令可以使用:thread -n 3,表示当前最忙的前N个线程并打印堆栈(详细命令)。

1
2
3
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar <pid>
thread -n 3

jstack 排查

  • 使用top将系统资源实时显示,输入大写P对CPU消耗进行排序,第一个就是CPU消耗最高的程序,获取 pid (或者也可以使用jps找到特定程序 pid)。

  • 利用top -Hp pid-H表示开启线程查看),之后输入大写P,按照CPU使用率对线程排序。

  • 找出线程ID后转为16进制:printf "%x\n" tid

  • 通过jstack pid > jstack.log生成进程日志文件,在文件中搜索16进制的线程ID,就可以看到这个线程在干啥了。

CATALOG
  1. 1. Arthas 排查
  2. 2. jstack 排查