如何快速定位线上CPU飙高问题

如何快速定位线上CPU飙高问题

传统方式排查

模拟CPU飙高的场景

Linux环境上运行测试Demo,模拟CPU飙高的场景

@RequestMapping("testCpu")

public String testCpuCpuSurgesOperation(){

// 模拟占用CPU资源操作

while (true){

}

}

top命令查找占用CPU高的进程

项目启动后,调用testCpu接口,通过top查看进程占用cpu情况,由下图可知进程号为15565的进程占用100.3%的CPU资源

根据进程号找到占用CPU高的线程

top -Hp -15565 找到进程中占用CPU高的线程

线程的转储信息输出到文件中

jstack -l 15565 >> stackdump.txt 用于生成线程转储信息的命令,并将其追加到名为 stackdump.txt 的文件中。

jstack 是一个 Java 命令行工具,用于生成 JVM中所有线程的转储信息。

-l 选项表示生成详细的线程转储信息,包括锁信息。

15565 是要生成线程转储的进程ID。

>> 是重定向操作符,用于将输出追加到指定的文件中。

线程id转为为16进制

使用printf “%x\n” 线程id将异常线程id转化为16进制

线程转储文件中找到对应的线程

打开线程转储文件(stackdump.txt),通过上面输出的16进制的线程i

猜你喜欢

舌尖上的潮汕, 有一种回忆叫糖葱薄饼
365be是啥

舌尖上的潮汕, 有一种回忆叫糖葱薄饼

📅 08-02 ❤️ 11
《爱情而已》VS《转角之恋》 “姐弟恋”怎么样才好看?
网易游戏的钱多久能到账
365be是啥

网易游戏的钱多久能到账

📅 07-10 ❤️ 353
暗影防护药水配方哪里出
365bet网上平台

暗影防护药水配方哪里出

📅 07-03 ❤️ 478
陈赫自认上学时是“校草”,本以为开玩笑,看到18岁旧照瞬间心动
饥荒芦苇多少天刷一次(饥荒芦苇多久刷新一次)
玛莎拉蒂总裁
365bet网上平台

玛莎拉蒂总裁

📅 10-03 ❤️ 360
认识 头号玩家 的演员阵容
365体育竞彩足球

认识 头号玩家 的演员阵容

📅 07-22 ❤️ 656
物流行业有哪些职位?
365bet网上平台

物流行业有哪些职位?

📅 07-14 ❤️ 14