線上服務(wù)CPU100%問(wèn)題定位

大致思路:

一、導(dǎo)出thread dump惰说、heap dump文件 (方式多種)

? ? 1.通過(guò)jvisualvm工具添加jmx連接(前提線上容器開(kāi)啟jmx)磨德,直接點(diǎn)擊堆Dump、線程Dump操作助被。

? ? 2.通過(guò)連接服務(wù)器剖张,執(zhí)行命令jstack、jmap進(jìn)行導(dǎo)出堆Dump揩环、線程Dump文件搔弄。

? ? %可通過(guò)jvisualvm工具導(dǎo)入堆Dump文件分析%


二、分析thread dump:關(guān)注線程狀態(tài)

????1.死鎖丰滑,Deadlock(重點(diǎn)關(guān)注)?

????2.執(zhí)行中顾犹,Runnable? ?

????3.等待資源,Waiting on condition(重點(diǎn)關(guān)注)

????4.等待獲取監(jiān)視器褒墨,Waiting on monitor entry(重點(diǎn)關(guān)注)

????5.暫停炫刷,Suspended

????6.對(duì)象等待中,Object.wait() 或 TIMED_WAITING

????7.阻塞郁妈,Blocked(重點(diǎn)關(guān)注)??

????8.停止浑玛,Parked

????**.Deadlock:死鎖線程,一般指多個(gè)線程調(diào)用間噩咪,進(jìn)入相互資源占用顾彰,導(dǎo)致一直等待無(wú)法釋放的情況极阅。

????**.Runnable:一般指該線程正在執(zhí)行狀態(tài)中,該線程占用了資源涨享,正在處理某個(gè)請(qǐng)求筋搏,有可能正在傳遞SQL到數(shù)據(jù)庫(kù)執(zhí)行,有可能在對(duì)某個(gè)文件操作厕隧,有可能進(jìn)行數(shù)據(jù)類型等轉(zhuǎn)換奔脐。

????**.Waiting on condition:等待資源,或等待某個(gè)條件的發(fā)生吁讨。具體原因需結(jié)合 stacktrace來(lái)分析髓迎。如果堆棧信息明確是應(yīng)用代碼,則證明該線程正在等待資源挡爵。一般是大量讀取某資源竖般,且該資源采用了資源鎖的情況下,線程進(jìn)入等待狀態(tài)茶鹃,等待資源的讀取涣雕。又或者,正在等待其他線程的執(zhí)行等闭翩。如果發(fā)現(xiàn)有大量的線程都在處在 Wait on condition挣郭,從線程 stack看,正等待網(wǎng)絡(luò)讀寫(xiě)疗韵,這可能是一個(gè)網(wǎng)絡(luò)瓶頸的征兆兑障。因?yàn)榫W(wǎng)絡(luò)阻塞導(dǎo)致線程無(wú)法執(zhí)行。一種情況是網(wǎng)絡(luò)非常忙蕉汪,幾乎消耗了所有的帶寬流译,仍然有大量數(shù)據(jù)等待網(wǎng)絡(luò)讀寫(xiě);另一種情況也可能是網(wǎng)絡(luò)空閑者疤,但由于路由等問(wèn)題福澡,導(dǎo)致包無(wú)法正常的到達(dá)。另外一種出現(xiàn) Wait on condition的常見(jiàn)情況是該線程在 sleep驹马,等待 sleep的時(shí)間到了時(shí)候革砸,將被喚醒。

**.Blocked:線程阻塞糯累,是指當(dāng)前線程執(zhí)行過(guò)程中算利,所需要的資源長(zhǎng)時(shí)間等待卻一直未能獲取到,被容器的線程管理器標(biāo)識(shí)為阻塞狀態(tài)泳姐,可以理解為等待資源超時(shí)的線程效拭。

????**.Waiting for monitor entry 和 in Object.wait():Monitor是 Java中用以實(shí)現(xiàn)線程之間的互斥與協(xié)作的主要手段,它可以看成是對(duì)象或者 Class的鎖。每一個(gè)對(duì)象都有允耿,也僅有一個(gè) monitor借笙。從下圖1中可以看出,每個(gè) Monitor在某個(gè)時(shí)刻较锡,只能被一個(gè)線程擁有,該線程就是 “Active Thread”盗痒,而其它線程都是 “Waiting Thread”蚂蕴,分別在兩個(gè)隊(duì)列 “ Entry Set”和 “Wait Set”里面等候。在 “Entry Set”中等待的線程狀態(tài)是 “Waiting for monitor entry”俯邓,而在 “Wait Set”中等待的線程狀態(tài)是 “in Object.wait()”。


三、找到最耗CPU線程

? ? ?1.執(zhí)行top -c蛙酪,顯示進(jìn)程運(yùn)行信息列表二蓝,進(jìn)程按照CPU使用率排序。

? ? ?2.執(zhí)行top -Hp ${pid}朦蕴,顯示一個(gè)進(jìn)程的線程運(yùn)行信息列表篮条,線程按照CPU使用率排序

? ? ?3.將線程PID轉(zhuǎn)化為16進(jìn)制(printf "0x%x\n" ${pid})

? ? ?4.找到線程在干嘛(jstack ${pid}| grep 0x658 -A 20)

? ? ? ?根據(jù)jstack的輸出,結(jié)合源碼很容易就可以發(fā)現(xiàn)問(wèn)題:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吩抓,一起剝皮案震驚了整個(gè)濱河市涉茧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疹娶,老刑警劉巖伴栓,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異雨饺,居然都是意外死亡钳垮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)额港,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)饺窿,“玉大人,你說(shuō)我怎么就攤上這事锹安《碳觯” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵叹哭,是天一觀的道長(zhǎng)忍宋。 經(jīng)常有香客問(wèn)我,道長(zhǎng)风罩,這世上最難降的妖魔是什么糠排? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮超升,結(jié)果婚禮上入宦,老公的妹妹穿的比我還像新娘哺徊。我一直安慰自己,他們只是感情好乾闰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布落追。 她就那樣靜靜地躺著,像睡著了一般涯肩。 火紅的嫁衣襯著肌膚如雪轿钠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天病苗,我揣著相機(jī)與錄音疗垛,去河邊找鬼。 笑死硫朦,一個(gè)胖子當(dāng)著我的面吹牛贷腕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咬展,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泽裳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挚赊?” 一聲冷哼從身側(cè)響起诡壁,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荠割,沒(méi)想到半個(gè)月后妹卿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔑鹦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年夺克,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嚎朽。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铺纽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哟忍,到底是詐尸還是另有隱情狡门,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布锅很,位于F島的核電站其馏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏爆安。R本人自食惡果不足惜叛复,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褐奥,春花似錦咖耘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至耍群,卻和暖如春义桂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹈垢。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袖裕,地道東北人曹抬。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像急鳄,于是被迫代替她去往敵國(guó)和親谤民。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容