美文网首页Java 杂谈
Java应用线上CPU飙高

Java应用线上CPU飙高

作者: 清风_gary_明月 | 来源:发表于2019-08-18 10:43 被阅读1次

  说明:曾经遇到过的一个线上实际问题,Demo是经过加工刻意重现,线上调试问题已经开发和运维人员的基本技能,在此备忘记录。


1、找出CPU占用较高的PID


  通过top命令,查找出占用CPU较高的PID:3639

pid.png

2、找出PID对应的TID


  命令:ps -mp 3639 -o THREAD,tid,time | sort –rn 这里可以看出查到的TID对应的是3673

tid.png

3、将TID转成16进制


  命令:printf "%x\n" 3673 转成十六进制为e59


4、通过jstack命令查出该线程栈信息


  命令:jstack 3546|grep e59 -A 100 前面数字是PID,后面红色数据是十六进制的TID。这里也可以通过jstack pid >/home/stack.log导出日志。

stack.png
  可以看上面蓝色部分很清晰的标出了可能有问题的代码位置,可以对比源码,我在20行的位置上面用个死循环导致的。
res.png
  提示:若不能及时定位问题,可以通过jmap将JVM的dump日志导出,线下分析用。若jstack、jmap不能使用,可以配置一下环境变量或者切到jre的bin目录下使用。
更多可以关注

相关文章

  • Java应用线上CPU飙高

      说明:曾经遇到过的一个线上实际问题,Demo是经过加工刻意重现,线上调试问题已经开发和运维人员的基本技能,在此...

  • 排查线上CPU飙高

    1、本案例的排查过程使用的阿里开源的Arthas工具进行的,不使用arthas,使用JDK自带的命令也是可以。 2...

  • Java问题排查-CPU飙高

    方法一 命令行工具 查看哪些Java进程在运行 查看具体进程线程占用情况,(shift+p 按cpu排序,shif...

  • java应用监测(4)-线上问题排查套路

    tags: java, troubleshooting, monitor 一句话概括:java应用线上问题如CPU...

  • CPU飙高排查一般步骤

    cpu飙高肯定是有一个进程中的某一个线程在疯狂占用cpu资源,所以线上排查一般是步骤如下: top 找出cpu高的...

  • 高内存占用处理方法

    前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查。 搞Java开发的,经常会碰到下...

  • JAVA线上常见问题排查

    1.线上CPU飙高排查思路 一般常见的原因主要是:①死循环(while / 递归 / for循环相关等 )②锁相...

  • 平时碰到系统CPU飙高和频繁GC

    平时碰到系统CPU飙高和频繁GC,你会怎么排查? 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 10...

  • CPU飙高了,这样玩

    服务CPU飙高了 项目运行时,JVM占用的CPU飙高,跟我们预期的不符,CPU在干什么呢?是什么让CPU如此忙碌呢...

  • CPU持续飙高

    1.通过top命令查看pidtop2.找到子进程号top -H -p pid3.查看16进制编号printf %x...

网友评论

    本文标题:Java应用线上CPU飙高

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