JVM調優(yōu)之jstack找出最耗cpu的線程并定位代碼

jstack可以定位到線程堆棧惫皱,根據(jù)堆棧信息我們可以定位到具體代碼,所以它在JVM性能調優(yōu)中使用得非常多裙椭。下面我們來一個實例找出某個Java進程中最耗費CPU的Java線程并定位堆棧信息驴娃,用到的命令有ps、top岩瘦、printf未巫、jstack、grep启昧。

第一步先找出Java進程ID叙凡,服務器上的Java應用名稱為mrf-center:

root@ubuntu:/# ps -ef | grep mrf-center | grep -v grep
root     21711     1  1 14:47 pts/3    00:02:10 java -jar mrf-center.jar

得到進程ID為21711,第二步找出該進程內最耗費CPU的線程密末,可以使用

1)ps -Lfp pid
2)ps -mp pid -o THREAD, tid, time
3)top -Hp pid

用第三個握爷,輸出如下:
TIME列就是各個Java線程耗費的CPU時間,CPU時間最長的是線程ID為21742的線程严里,用

printf "%x\n" 21742

得到21742的十六進制值為54ee新啼,下面會用到。

OK刹碾,下一步終于輪到jstack上場了燥撞,它用來輸出進程21711的堆棧信息,然后根據(jù)線程ID的十六進制值grep,如下:

root@ubuntu:/# jstack 21711 | grep 54ee
"PollIntervalRetrySchedulerThread" prio=10 tid=0x00007f950043e000 nid=0x54ee in Object.wait()

可以看到CPU消耗在PollIntervalRetrySchedulerThread這個類的Object.wait()物舒,我找了下我的代碼色洞,定位到下面的代碼:

// Idle wait
getLog().info("Thread [" + getName() + "] is idle waiting...");
schedulerThreadState = PollTaskSchedulerThreadState.IdleWaiting;
long now = System.currentTimeMillis();
long waitTime = now + getIdleWaitTime();
long timeUntilContinue = waitTime - now;
synchronized(sigLock) {
    try {
    if(!halted.get()) {
    sigLock.wait(timeUntilContinue);
    }
} 
catch (InterruptedException ignore) {
    }
}

它是輪詢任務的空閑等待代碼,上面的sigLock.wait(timeUntilContinue)就對應了前面的Object.wait()冠胯。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末火诸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涵叮,更是在濱河造成了極大的恐慌惭蹂,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件割粮,死亡現(xiàn)場離奇詭異盾碗,居然都是意外死亡,警方通過查閱死者的電腦和手機舀瓢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門廷雅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人京髓,你說我怎么就攤上這事航缀。” “怎么了堰怨?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵芥玉,是天一觀的道長。 經常有香客問我备图,道長灿巧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任揽涮,我火速辦了婚禮抠藕,結果婚禮上,老公的妹妹穿的比我還像新娘蒋困。我一直安慰自己盾似,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布雪标。 她就那樣靜靜地躺著零院,像睡著了一般。 火紅的嫁衣襯著肌膚如雪村刨。 梳的紋絲不亂的頭發(fā)上门粪,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音烹困,去河邊找鬼。 笑死乾吻,一個胖子當著我的面吹牛髓梅,可吹牛的內容都是我干的拟蜻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼枯饿,長吁一口氣:“原來是場噩夢啊……” “哼酝锅!你這毒婦竟也來了?” 一聲冷哼從身側響起奢方,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤搔扁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蟋字,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稿蹲,經...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年鹊奖,在試婚紗的時候發(fā)現(xiàn)自己被綠了苛聘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡忠聚,死狀恐怖设哗,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情两蟀,我是刑警寧澤网梢,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站赂毯,受9級特大地震影響战虏,放射性物質發(fā)生泄漏。R本人自食惡果不足惜欢瞪,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一活烙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遣鼓,春花似錦啸盏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至次企,卻和暖如春怯晕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缸棵。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工舟茶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓吧凉,卻偏偏與公主長得像隧出,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子阀捅,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內容

  • iPad Pro 自發(fā)布以來胀瞪,承受了太多的非議和無腦噴,我想饲鄙,是時候寫一些自己的感悟給它正名了凄诞。 昨天晚上,北京時...
    KyXu閱讀 1,929評論 0 8
  • 今日出門忍级,路遇一只小喜鵲帆谍。當時剛剛從公交車上下來,就聽到身后有人問:“姐姐颤练,請問浙江圖書館怎么走凹纫洹?”一回頭嗦玖,就看...
    流浪的愛麗絲閱讀 332評論 0 1
  • 現(xiàn)在患雇,我們繼續(xù)看下去吧! 愛拉粑粑不愛拉尿的可愛小妹妹來啦宇挫,她說:“臭粑粑苛吱,香粑粑,你們在干嘛呢器瘪?請問有粑粑給我吃...
    忘了我臭小姐閱讀 355評論 0 0
  • 生命的重啟 : 思想 __ 微型散文詩 作者 : 何強 " 沒有一聲巨響翠储,世界不會理你的 " 望著故鄉(xiāng),突然迷失了...
    天邊的凝紅閱讀 154評論 0 1