JVM性能调优之服务器CPU飙升,响应速度慢

有时候我们会发现CPU占用率很高,系统日志中也看不出问题所在,那么此时我们就需要区查看以下运行中的线程有没有异常情况。
简单说就是先找到CPU飙升的进程,再找到进程中占用CPU资源最多的线程,通过jstack命令打出这个线程的dump文件,找到具体的代码位置

  • 通过top -c命令可以动态显示进程占用资源排行榜,包括CPU、内存、占用进行ID。得到的
    PID=80972
    在这里插入图片描述
  • 然后再定位到当前进程的哪个线程,通过命令top -H -p 80972查找到当前进程中最消耗CPU的线程。PID=81122。
    JVM性能调优之服务器CPU飙升,响应速度慢_第1张图片
  • 通过printf "0x%x\n" 81122命令,把对应线程PID转化为16进制。
    printf "0x%x\n" 81122 -> 0x13ce2
  • 查看当前线程的Dump日志,定位到具体有问题的代码。命令jstack 80972 | grep -A 20 0x13ce2
    JVM性能调优之服务器CPU飙升,响应速度慢_第2张图片

从上述内容可以看出,是WhileThread.run方法中,执行的逻辑导致CPU占用过高。

你可能感兴趣的:(JVM)