如何定位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负载不均

猜你喜欢

转载自kite001.iteye.com/blog/2103835
今日推荐