Java進程CPU使用率高排查

近期java應用,CPU使用率一直很高,常常達到100%,經過如下步驟完美解決,分享一下。html

方法一:

轉載:http://www.linuxhot.com/java-cpu-used-high.htmljava

1.jps 獲取Java進程的PID。linux

2.jstack pid >> java.txt 導出CPU佔用高進程的線程棧。優化

3.top -H -p PID 查看對應進程的哪一個線程佔用CPU太高。spa

4.echo 「obase=16; PID」 | bc 將線程的PID轉換爲16進制,大寫轉換爲小寫。線程

5.在第二步導出的Java.txt中查找轉換成爲16進制的線程PID。找到對應的線程棧。htm

6.分析負載高的線程棧都是什麼業務操做。優化程序並處理問題。進程

 

方法二:

1.使用top 定位到佔用CPU高的進程PIDclass

top sed

經過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

相關文章
相關標籤/搜索