赞
踩
主要介绍了java应用cpu占用过高问题分析及解决方法,具有一定参考价值,需要的朋友可以参考下。 使用jstack分析java程序cpu占用率过高的问题
1,使用jps查找出java进程的pid,如14292
2,使用top -p 14292 -H观察该进程中所有线程的CPU占用
3,找出CPU消耗较多的线程id,如15844,将15844转换为16进制0x3de4,注意是小写哦
4,使用jstack 14292|grep -A 10 0x3de4来查询出具体的线程状态
通过这些线程状态便可基本定位问题之所在。
方法1
1.jps 获取Java进程的PID。
2.jstack pid >> java.txt 导出CPU占用高进程的线程栈。
3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。
4.echo “obase=16; PID” | bc 将线程的PID转换为16进制,大写转换为小写。
5.在第二步导出的Java.txt中查找转换成为16进制的线程PID。找到对应的线程栈。
6.分析负载高的线程栈都是什么业务操作。优化程序并处理问题。
方法2
1.使用top 定位到占用CPU高的进程PID top 通过ps aux | grep PID命令
2.获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,time | sort -rn
3.将需要的线程ID转换为16进制格式 printf “%x\n” tid
4.打印线程的堆栈信息 jstack pid |grep tid -A 30
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。