linux cpu飙高原因排查(有手就行)-阿里云开发者社区

开发者社区> 负债程序猿> 正文

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

问题不大

破案

撒花

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9531 0
阿里云ECS服务器CPU总是100%跑满该怎么排查?
阿里云ECS服务器CPU总是100%跑满该怎么排查?
2047 0
排查Java高CPU占用原因
开篇 ?在简书看到一篇公众号讲如何排查CPU问题,想了想在日常工作中也偶尔遇到这样的问题,所以在网上搜了搜该方面的文章,特意拷贝了一篇文章作日后排查参考。
1476 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13223 0
湖北阿里云授权服务中心分析云服务器CPU跑满或跑高排查问题
相信很多客户在使用云服务器ECS时,若出现服务的速度变慢,或ECS实例突然断开。这种情况我们一般考虑服务器带宽和CPU是否有跑满或跑高的问题。若您预先创建报警任务,当带宽和CPU跑满或跑高时,系统将自动进行报警提醒。
1835 0
2020最新 阿里云ECS的CPU100%排查
初创公司,架构lanmp,web前端和后端分开服务器,业务驱动主要是nginx和apache,nginx主要是处理静态文件和反向代理,前后端、搜索引擎、缓存、队列等附加的服务都是用docker容器部署。
405 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11541 0
主机cpu突然飙高,如何快速排查问题
主机cpu突然飙高,如何快速排查问题[问题发现] 使用zabbix软件监控服务器时发现cpu突然异常,在业务主机上使用top命令查看系统的整体运行情况,使用top命令后发现mysqld占用CPU特别高,初步判断可能是mysqld出现问题,需要排查: [排查步骤] Step1: 登录oneapm ai平台后可以看到应用列表的总览视图,在总览视图中可以看到所有应用的名称以及相关指标信息,同时我们还可以根据应用颜色变化来判断每个应用的指标变化情况。
1314 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6934 0
+关注
负债程序猿
知道的越多,不知道的越多
118
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载
http://www.vxiaotou.com