如何定位CPU高负荷问题

思路:
找到最耗cpu的进程PID,然后查看该进程下的线程,将最耗时间片的线程tid转化成16进制,使用jstack命令分析PID后,在分析出来的文件中搜TID的16进制数,定位问题

具体步骤:
1) Top查看最耗费CPU的进程PID1,在top命令界面按H键,可以查看到最耗费CPU的线程,记为TID1;
2) 通过jstack命令dump出当前的jvm进程的堆栈信息:jstack PID > cpu.log
3) 将TID转化成16进制,命令: printf "%x\n" TID
4) 在dump文件中查找16进制的线程TID,命令:grep 16进制TID cpu.log
5) 查看具体的信息,命令:vi cpu.log,可以定位具体是什么原因导致的cpu占用过高。


另外:CPU负载不均,多核CPU,单核负载高,很多时候会认为应该是循环造成的,也可以用上面的方法定位问题


参考文档:http://www.blogjava.net/cenwenchu/archive/2009/07/09/286047.html
cpu负载不均
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值