Linux教程

linux 下排查 Cpu 异常

本文主要是介绍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

这篇关于linux 下排查 Cpu 异常的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!