日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【JVM性能调优】使用jstack找出最耗CPU的java线程

發(fā)布時間:2024/4/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JVM性能调优】使用jstack找出最耗CPU的java线程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

jstack可以定位到線程堆棧,根據(jù)堆棧信息我們可以定位到具體的代碼,所以它在JVM性能調(diào)優(yōu)中很常見。下面我們在找出某個java進程中最耗CPU的線程,并定位堆棧信息,使用到的命令有:ps、top、printf、jstack、grep。

1、使用top -c命令查看占用CPU最高的java進程

#top -c

2、查看CPU占用最高的線程

1#top -Hp 9179 -d 1 -n 12#ps -Lfp pid (3#ps -mp pid -o THREAD,tid,time

使用第一個輸出如下:(time列就是各個java線程耗費的CPU時間)

PS:top命令參數(shù)說明:
-p PID:僅監(jiān)視指定進程的ID,PID是進程號;
-c:顯示命令行,而不僅僅是命令名
-h:當(dāng)系統(tǒng)有多個CPU時,個別CPU的狀態(tài)信息被隱藏,只顯示平均狀態(tài)值
-d N:顯示兩次刷新時間的間隔,比如:-d 5,表示兩次刷新時間間隔為5秒;

3、占用CPU最高的線程9179換算成16進制到文檔中尋找對象應(yīng)線程

#printf "%x\n" 9224

4、打印占用CPU最高的java線程9224的堆棧信息

1#jstack 9224 > /root/mss/dump.txt2#jstack 9179 | grep 2408n

使用第二個,用來輸出進程9179的堆棧信息,然后根據(jù)線程ID的十六進制值grep,如下:

"PollIntervalRetrySchedulerThread" prio=10 tid=0x00007f950043e000 nid=0x54ee in Object.wait()

可以看到CPU消耗在PollIntervalRetrySchedulerThread這個類的Object.wait()這個方法。

有一個方便的定位腳本如下:

###### begin pid為86295的java進程中cpu>0的線程的堆棧###### pid=86295 sfile="/tmp/java.$pid.trace" tfile="/tmp/java.$pid.trace.tmp" rm -f $sfile $tfile echo "pid $pid"jstack $pid > $tfile ps -mp $pid -o THREAD,tid,time|awk '{if ($2>0 && $8 != "-") print $8,$2}'|while read line; donid=$(echo "$line"|awk '{printf("0x%x",$1)}')cpu=$(echo "$line"|awk '{print $2}')echo "nid: $nid, cpu: $cpu %">>$sfilelines=`grep $nid -A 100 $tfile |grep -n '^$'|head -1|awk -F':' '{print $1}'`((lines=$lines-1))if [ "$lines" = "-1" ];thengrep $nid -A 100 $tfile >>$sfileecho '' >>$sfileelsegrep $nid -A $lines $tfile >>$sfilefi done rm -f $tfile echo "read msg in $sfile" ########### end ############

需要注意的是pid的獲取依然需要多ps查找一次,建議pid的獲取方式可以改為:

ps -ef|grep 你程序的關(guān)鍵字|grep -v 'grep'|awk '{print $2}' 超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的【JVM性能调优】使用jstack找出最耗CPU的java线程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。