写在前面
上周linux生产上flink任务出现了cpu飙升的情况,找到了一套快速实时定位耗费cpu代码的方法,最终找到出现bug的代码位置,并紧急修复了bug。虽然比较简单,还是需要记录下,以防不时之需。
正文
示例代码如下:
运行后,使用top命令看到cpu飙升,并得到pid
拿着pid在使用top -h -p pid或者ps -mp pid -o THREAD,tid,time或者ps -Lfp pid
将需要的线程ID转换为16进制格式
- printf “%x\n” tid
打印线程的堆栈信息 到了这一步具体看堆栈的日志来定位问题了
jstack pid |grep tid -A 30