美文网首页
java 定位服务器CPU占用过高

java 定位服务器CPU占用过高

作者: 无色的叶 | 来源:发表于2019-08-02 16:59 被阅读0次

定位进程

登录服务器,执行top命令,查看CPU占用情况:

$top
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1893 admin     20   0 7127m 2.6g  38m S 181.7 32.6  10:20.26 java

通过以上命令,我们可以看到,进程ID为1893的Java进程的CPU占用率达到了181%,基本可以定位到是我们的Java应用导致整个服务器的CPU占用率飙升。

定位线程

我们知道,Java是单进程多线程的,那么,我们接下来看看PID=1893的这个Java进程中的各个线程的CPU使用情况,同样是用top命令:

$top -Hp 1893
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  4519 admin     20   0 7127m 2.6g  38m R 18.6 32.6   0:40.11 java

通过top -Hp 1893命令,我们可以发现,当前1893这个进程中,ID为4519的线程占用CPU最高。

定位代码

通过top命令,我们目前已经定位到导致CPU使用率较高的具体线程, 那么我么接下来就定位下到底是哪一行代码存在问题。

首先,我们需要把4519这个线程转成16进制:

$printf %x 4519
11a7

接下来,通过jstack命令,查看栈信息:

$ jstack 1893 |grep -A 200 11a7

相关文章

网友评论

      本文标题:java 定位服务器CPU占用过高

      本文链接:https://www.haomeiwen.com/subject/wptrdctx.html