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

问题不大

破案

撒花

相关文章
|
29天前
|
缓存 关系型数据库 分布式数据库
PolarDB常见问题之数据库cpu突然飙高如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
2月前
|
缓存 运维 Linux
Linux系统调优详解(三)——CPU状态查看相关命令
Linux系统调优详解(三)——CPU状态查看相关命令
41 1
|
2月前
|
运维 Linux
Linux系统调优详解(二)——CPU负载查看相关命令
Linux系统调优详解(二)——CPU负载查看相关命令
50 10
|
3月前
|
Linux
|
1月前
|
监控 Java 索引
cpu使用率过高和jvm old占用过高排查过程
cpu使用率过高和jvm old占用过高排查过程
36 2
|
3月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
43 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
24天前
|
监控 Linux Shell
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
39 0
|
24天前
|
存储 监控 Linux
Linux 使用getrusage系统调用获取cpu信息:一个C++实例分析
Linux 使用getrusage系统调用获取cpu信息:一个C++实例分析
48 0
|
1月前
|
监控 Linux 测试技术
【 C/C++ 性能分析工具 CPU 采样分析器 perf 】掀开Linux perf性能分析的神秘面纱
【 C/C++ 性能分析工具 CPU 采样分析器 perf 】掀开Linux perf性能分析的神秘面纱
63 0
|
1月前
|
域名解析 监控 网络协议
Linux 如何排查网络问题
确认基本网络连接 使用ping命令检查是否能够成功连接到互联网或目标主机。例如: ping www.google.com 查看网络接口状态 使用ifconfig或ip address show命令查看网络接口的状态。确认网络接口是否正常启用,并且是否分配了正确的IP地址。
50 3