美文网首页
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