java运行CPU高负载高的分析流程/性能优化

已邀请:

背景:某项目CPU高,通过常规监控无法监控到活跃的进程,但是应用的CPU占用非常高。


1、top 命令,找到CPU占用高的进程,例如PID 为612(以下涉及612的均为该异常进程的PID)


2、单独跟踪该进程,top -p 612


3、跟进分析线程,输入大写的 H


4、找到CPU占用高的线程,记录前面的PID号(线程号),例如为 31194 , 通过16进制转换(https://tool.oschina.net/hexconvert),转换为16进制值:79da


5、通过jstack -p 612 > 612.log将进程快照输出到日志


6、查看5中输出的612.log搜索4中的16进制编码79da就可以查询到当前占用CPU的线程


http://nccloud.yytimes.com/uploads/answer/20210909/93334ce27dbe46322ad785c42aeeeb6b.png

http://nccloud.yytimes.com/uploads/answer/20210909/028877c0941a23bfad249bb9a35339b1.png


通过分析发现,类似线程有5个,通过协同开发分析后发现是在做后台的批量计算

要回复问题请先登录注册