Java应用CPU使用率过高排查

线上服务器的CPU使用率达到100%,相信这是每个Java程序员工作生涯中大概率会遇到的一个问题。那么遇到这种情况,我们应该怎么去进行定位排查呢?

接下来,分享给大家一个十分简单、但是及其有效的套路。

(1)使用top命令确定CPU占用过高的进程pid

    top命令执行后,可以看到Pid为1707的进程占用了大量CPU资源

image-1656515893110

(2)查看该进程pid下的线程情况

 命令:top -Hp    1707

    从结果看,该进程下的2651/3485/1979等线程耗费了大量的CPU时间

image-1656515903753

(3)将线程id转化为16进制

    命令:printf    ‘%x’    2651

image-1656515918886

(4)通过jstack命令查看线程执行情况

    命令:jstack   1707 | grep -A 10  nid=0xa5b

image-1656515931651

看到这,相信大家已经不难定位到有问题的代码了吧?

0
答应我,别再ifelse走天下…

没有评论

No comments yet

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注