美文网首页
排查Java程序CPU占用过高的线程

排查Java程序CPU占用过高的线程

作者: CrazyLabs | 来源:发表于2016-05-23 11:33 被阅读0次

    收到服务器报警,服务端的一个java服务占用cpu200%多。该服务里面跑了很多线程,于是想找到是谁引起的。

    1、首先dump出该进程的所有线程及状态

    使用命令 jstack PID 命令打印出CPU占用过高进程的线程栈.

    jstack -l5683>5683.stack

    将进程id为5683的线程栈输出到了文件

    2、使用top命令找到耗cpu的线程

    使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高.

    可以看到是  5726 ~ 5729这4个线程占用的cpu比较高

    3. 将线程的pid 转成16进制,比如5729 = 0x1661

    到第一步dump出来的 5683.stack 里面找0x1661 就知道是哪个线程了

    经过查找,是服务线程比较忙,初步解决方法就是加大服务线程数。

    相关文章

      网友评论

          本文标题:排查Java程序CPU占用过高的线程

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