近期java應用,CPU使用率一直很高,經常達到100%,通過以下步驟完美解決,分享一下。
方法一:
轉載:http://www.linuxhot.com/java-cpu-used-high.html
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.分析負載高的線程棧都是什么業務操作。優化程序並處理問題。
方法二:
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