learn and grow up

快速在linux排查java中cpu飙升线程或代码位置的方法

字数统计: 174阅读时长: 1 min
2021/01/09 Share

写在前面

​ 上周linux生产上flink任务出现了cpu飙升的情况,找到了一套快速实时定位耗费cpu代码的方法,最终找到出现bug的代码位置,并紧急修复了bug。虽然比较简单,还是需要记录下,以防不时之需。

正文

  1. 示例代码如下:

    demo

  2. 运行后,使用top命令看到cpu飙升,并得到pid

    top

  3. 拿着pid在使用top -h -p pid或者ps -mp pid -o THREAD,tid,time或者ps -Lfp pid

  4. 将需要的线程ID转换为16进制格式

    1. printf “%x\n” tid
  5. 打印线程的堆栈信息 到了这一步具体看堆栈的日志来定位问题了

    jstack pid |grep tid -A 30

CATALOG
  1. 1. 写在前面
  2. 2. 正文