linux 下排查 Cpu 异常

1. 准备

2. linux 下运行
  执行如下命令,生成 class 文件

[luozhihong@localhost java]$ javap CpuTest.java
1
  执行 java 命令,运行程序

[luozhihong@localhost java]$ java CpuTest
1
3. 问题排查
执行 top 命令,查看 cpu 异常的进程
[luozhihong@localhost ~]$ top

  可以看出 PID = 3221 的进程,cpu 消耗达 98.7% 以上,是由 java 命令开启的

执行 top -Hp pid,查看进程中哪个线程消耗 cpu 严重
[luozhihong@localhost ~]$ top -Hp 3221

  从结果可以看出,进程中有8个线程占用 cpu 异常。这里我们找其中的一个线程分析即可

执行 printf “0x%x\n”线程PID
[luozhihong@localhost ~]$ printf "0x%x\n"3231

  将线程PID转换为 16进制,为后面查找 jstack 日志做准备

执行 jstack 进程PID|vim + /16进制线程PID - ,打印线程堆栈信息
[luozhihong@localhost ~]$ jstack 3221|vim +/0x0 -
1
  截取输出部分输出结果如下:

Thread-7" #15 prio=5 os_prio=0 tid=0x00007f7d6c0cb800 nid=0xca6 runnable [0x00007f7d70286000]
java.lang.Thread.State: RUNNABLE

上一篇:Rsync修改默认873端口


下一篇:JVM指令和监控工具