【JVM-04】线上CPU100%

【JVM-04】线上CPU100%

1. 如何排查

⼀般CPU100%疯狂GC,都是死循环的锅,那怎么排查呢?先进服务器,⽤top -c 命令找出当前进程的运⾏列表按⼀下 P 可以按照CPU使⽤率进⾏排序显示Java进程 PID 为 2609 的java进程消耗最⾼。

[root@VM-8-7-centos ~]# top -c

在这里插入图片描述

然后我们需要根据PID 查出CPU⾥⾯消耗最⾼的进程
使⽤命令 top -Hp 2609 找出这个进程下⾯的线程,继续按P排序

[root@VM-8-7-centos ~]# top -Hp 2609

可以看到 2854 CPU消耗最⾼
在这里插入图片描述
2854是⼗进制的,我们需要转换为⼗六进制,转换结果:b26
接下来就需要导出我们的进程快照了,看看这个线程做了啥

[root@VM-8-7-centos ~]# jstack -l 2609 > ./2609.stack

再⽤grep查看⼀下线程在⽂件⾥做了啥

[root@VM-8-7-centos ~]# cat 2609.stack |grep 'b26' -C 8

这⾥就随便定位⼀个,基本上这样查都可以定位到你死循环的那个类。
在这里插入图片描述

2. 再举一个例子

public class FullCPU {
    public static void main(String[] args) {
        while(true){

        }
    }
}


java -cp . FullCPU

在这里插入图片描述

PID (进程标识符)
[root@VM-8-7-centos ~]# top -Hp 12844

结合起来,top -Hp 12844 命令的作用是:
-H 显示所有线程 -p12844 只显示 PID 为 12844 的进程信息

  1. 启动 top 命令。
  2. 显示 PID 为 12844 的进程及其所有线程的详细信息。
  3. 实时更新该进程和线程的资源使用情况。

在这里插入图片描述

[root@VM-8-7-centos ~]# jstack -l 12844 > ./12844.stack

1284516进制为0x322d
cat 12844.stack |grep '0x322d' -C 8

在这里插入图片描述

[root@VM-8-7-centos ~]# jstack -l 12844 > ./12844.stack执行这个命令后,jstack 工具将生成一个包含 PID 为 12844 的 Java 进程的所有线程的当前状态的快照,并将其保存到 ./12844.stack 文件中。文件内容通常包括每个线程的堆栈跟踪、线程状态以及锁信息。

完整命令:cat 12844.stack | grep '0x322d' -C 8

  1. 这条命令首先使用 cat 命令显示 12844.stack 文件的内容。
  2. 然后通过管道符 | 将 cat 命令的输出传递给 grep 命令。
  3. grep 命令搜索包含 ‘0x322d’ 的行,并显示该行及其上下 8 行的内容。

相关推荐

  1. JVM线故障排查】

    2024-07-09 22:30:02       48 阅读
  2. cpp笔记-24-05-10

    2024-07-09 22:30:02       27 阅读
  3. cpu100%排查

    2024-07-09 22:30:02       19 阅读
  4. JVM-02

    2024-07-09 22:30:02       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 22:30:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 22:30:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 22:30:02       57 阅读
  4. Python语言-面向对象

    2024-07-09 22:30:02       68 阅读

热门阅读

  1. CUDA Kernel调试与优化--背景知识扫盲(LLM生成)

    2024-07-09 22:30:02       16 阅读
  2. C语言希尔排序详解与实例

    2024-07-09 22:30:02       22 阅读
  3. 多尺度旋转编码

    2024-07-09 22:30:02       23 阅读
  4. PostgreSQL的使用

    2024-07-09 22:30:02       21 阅读
  5. 定投就像还房贷

    2024-07-09 22:30:02       22 阅读
  6. Linux下python抓取动态网页内容

    2024-07-09 22:30:02       28 阅读
  7. uniapp中 uni.previewImage用法

    2024-07-09 22:30:02       26 阅读
  8. JVM专题之走进类加载

    2024-07-09 22:30:02       23 阅读
  9. 大模型/NLP/算法面试题总结

    2024-07-09 22:30:02       23 阅读
  10. 数据结构之B树

    2024-07-09 22:30:02       22 阅读