性能调优-CPU过高

前言

jstack命令可以定位到JAVA线程的堆栈信息,常用的调试命令如ps,top,printf,jstack,jinfo,jmap,jps,grep,jstat等,本文将示例如何查找JAVA进程中耗CPU过多的问题定位方法。

定位线程

查找进程ID

运用命令ps -ef|grep java|grep appName,得出如下图所示。
查找进程PID

定位线程

  • 从上面得出PID为32174,接下来使用如下命令可以得到耗时较高的具体线程。
1,ps -Lfp pid
2,ps -mp pid -o THREAD, tid, time
3,top -Hp pid

使用第三条命令查找得出结果哪下

定位线程

从以上可以看出耗时最高的线程PID为32604。

  • 查找出来的PID是用十进制表示的,需要使用命令printf "%x\n" 32604将其转换为十六进制为7f5c,因为jstack导出的线程堆栈是用十六制表的
  • 定位到具体的代码位置,使用命令jstack 32551|grep 7f5c,得到如下信息

定位代码

总结

好了,通过以上几步基本上可以定位到代码级别的位置了,在此也只是略表记录,更多的小技巧之类的继续总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值