linux cpu飙高原因排查(有手就行)

简介: 其实我们现在已经知道是谁把cpu拉高了,但还不够细,只知道哪个项目出的问题远远不够,我们应该找到罪魁祸首,到底是哪个方法的多少行导致的问题,这才能让老大直呼内行

cpu飙高是很常见的线上问题,这都不会的话,属实有点拉跨

3d6b6c96933f4ddbab30ebbca2437708.png

兄弟萌不用慌,来我教你一套连招

先来个项目,整个api,到时候我们请求/cpu/{count}就能手动拉高cpu,机智鬼~

    @GetMapping("/cpu/{count}")
    public long cpuTest(@PathVariable("count") long count) {
        long number = 0;
        for (int i = 0; i < count; i++) {
            number++;
        }
        return number;
    }

打包、上传、启动

0f563045c28b400f8ee50cec52805e72.png

跑起来了,记住这个进程号 14849


我们先top看看正常情况下的cpu使用率

014244dfdc474690b7c67c6c5d383e98.png

很合理

模拟线上cpu飙高

我们请求/cpu/{100000000000}接口,把cpu拉起来,同时top观察cpu使用率

f789d85b0de94d87b33f389eef9ec368.png

直接干到98%,很nice


ok入戏,我们现在线上出问题了,cpu一直很高,老大叫你找找原因,开始支棱起来


其实我们现在已经知道是谁把cpu拉高了,但还不够细,只知道哪个项目出的问题远远不够,我们应该找到罪魁祸首,到底是哪个方法的多少行导致的问题,这才能让老大直呼内行


先说步骤:

jps+top 定位应用进程 pid

top -Hp {pid}找到线程 tid

将 tid 转换成十六进制 printf “%x\n” {tid}

打印堆栈信息 jstack

过滤出我们想要的

ok开始排查


进程id已经确定是 14849,下一步我们要找到是哪个线程搞的鬼

top -Hp 14849

91c73c411a994767a0c014bc1eb66c90.png

很明显是这个14908搞的鬼

转十六进制

961cbcc05b8b4b1a969c4fb92ea4e032.png

打印堆栈

d3af4b511bb2414a9cd1c88c62c5dd3f.png

堆栈信息显示是TestController里面的第20行出的幺蛾子,我们进入代码验证

0ec6f699af84454a926ba6befdcdbc52.png

问题不大

破案

撒花

相关文章
|
19天前
|
缓存 监控 Linux
在Linux中,如何看当前系统有几颗物理CPU和每颗CPU的核数?
在Linux中,如何看当前系统有几颗物理CPU和每颗CPU的核数?
|
14天前
|
小程序 JavaScript Java
【Java】服务CPU占用率100%,教你用jstack排查定位
本文详细讲解如何使用jstack排查定位CPU高占用问题。首先介绍jstack的基本概念:它是诊断Java应用程序线程问题的工具,能生成线程堆栈快照,帮助找出程序中的瓶颈。接着,文章通过具体步骤演示如何使用`top`命令找到高CPU占用的Java进程及线程,再结合`jstack`命令获取堆栈信息并进行分析,最终定位问题代码。
96 1
【Java】服务CPU占用率100%,教你用jstack排查定位
|
20天前
|
监控 Linux
性能分析之 Linux 系统中 ps&top 中 CPU 百分比不一致?
【8月更文挑战第18天】性能分析之 Linux 系统中 ps&top 中 CPU 百分比不一致?
34 4
|
20天前
|
安全 Linux 文件存储
在Linux中,服务器开不了机怎么解决⼀步步的排查?
在Linux中,服务器开不了机怎么解决⼀步步的排查?
|
20天前
|
运维 监控 网络协议
在Linux中,如何进行网络故障排查?
在Linux中,如何进行网络故障排查?
|
13天前
|
消息中间件 Java 调度
一次线上服务CPU100%的排查过程
文章记录了一次线上服务CPU使用率达到100%的排查过程,通过使用top命令和jstack工具确定了导致高CPU使用的线程,并分析了Disruptor组件的不当配置是问题原因,通过修改组件的策略成功解决了问题。
12 0
|
13天前
|
缓存 Linux 调度
Linux服务器如何查看CPU占用率、内存占用、带宽占用
Linux服务器如何查看CPU占用率、内存占用、带宽占用
51 0
|
18天前
|
运维 监控 Linux
Linux系统读写硬盘慢,如何排查?四步教你定位问题!
【8月更文挑战第24天】在Linux系统运维中,硬盘读写速度慢是一个常见且影响重大的问题。它不仅会导致服务器性能下降,还会影响用户体验。本文将详细介绍四个步骤,帮助你快速定位并解决Linux系统硬盘读写慢的问题。
113 0
|
20天前
|
Linux
在Linux中,如何找出占用CPU或内存最多的进程?
在Linux中,如何找出占用CPU或内存最多的进程?
|
20天前
|
监控 NoSQL 算法
在Linux中,如何排查死锁问题?
在Linux中,如何排查死锁问题?