美文网首页
JVM调优之jstack找出最耗cpu的线程并定位代码

JVM调优之jstack找出最耗cpu的线程并定位代码

作者: better0812 | 来源:发表于2018-11-06 14:45 被阅读0次

    第一步:先找出java的进程Id(PID) 假设java应用名称是zcg_commodity

    ps -ef|grep zcg_commodity

    得到进程Id为32464

    <!-- more -->

    第二步:找出该进程内最消耗CPU的线程

    top -Hp pid

    输入top -Hp 32464

    TIME列就是各个java线程耗费的CPU的时间,比如图中是线程ID的为2012的线程,

    通过 printf "%x\n" 2012

    得到2012的十六进制为 7dc

    第三步:

    一般会进到jdk的bin目录下,root权限执行

    jstack 32464|grep 7dc

    PollIntervalRetrySchedulerThread" prio=10 tid=0x00007f950043e000 nid=0x54ee in Object.wait()

    定位问题所在

    之前有遇到前几个消耗CPU的线程都是GC的,那可能是短时间内存泄露严重,导致GC回收不过来,导致CPU短时间飙升

    这种情况用jmap -histo:live 32464 |head -20,查看哪个对象生成异常,就可以定位问题大方向

    第四步:

    查代码

    相关文章

      网友评论

          本文标题:JVM调优之jstack找出最耗cpu的线程并定位代码

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