Java問題定位:CPU占用過高分析

一般在開發(fā)Java的時候叮叹,為防止占用過多的資源艾栋,對CPU和內(nèi)存的占用,都會有一個要求蛉顽,例如CPU不能超過70%蝗砾,內(nèi)存不能超過4G等,那在一般問題定位的過程中蜂林,如何和定位這些問題呢,下面簡單介紹一下CPU占用過高問題的定位方法拇泣。

Linux環(huán)境

在Linux上面噪叙,可以借助豐富的命令行工具來進(jìn)行定位

  • 查找占用過高的進(jìn)程

執(zhí)行top命令查看CPU占用高的進(jìn)程

image.png

例如我們認(rèn)為上面紅框的部分為顯示的CPU占用過多的進(jìn)程,可以看到霉翔,其進(jìn)程號為93937睁蕾,下面會多次使用這個進(jìn)程號定文。

  • 查找對應(yīng)的線程
    執(zhí)行ps -mp 93937-o THREAD,tid,time如下
image.png

最下面的三個線程债朵,顯示占用較高子眶,幾乎占滿的單個CPU的時間

  • 查找對應(yīng)的方法棧

這邊利用了Java自帶的jstack命令,執(zhí)行一下jstack 93937序芦,如下

image.png

如上臭杰,我們看到這幾個線程,當(dāng)然真實(shí)場景會更為復(fù)雜一些谚中,紅框的部分渴杆,是線程號寥枝,我們看到這些都是以0x打頭的,是16進(jìn)制的表示磁奖,所以需要將步驟二定位出來的線程號轉(zhuǎn)換一下囊拜,可以直接在Linux命令行輸入如下命令來定位上面框出來的三個線程

printf "%x\n" 93975 16f17
printf "%x\n" 93976 16f18
printf "%x\n" 93977 16f19

正好定位到三個16進(jìn)制表示的線程號,至此就找到了對應(yīng)的方法棧比搭,下面就可以直接去代碼里面查找問題了冠跷。

當(dāng)然,對于此步驟身诺,還可以一步執(zhí)行如下命令定位蜜托,如下

jstack 93937 | grep $(printf "%x\n" 93975) -A 10

93937 表示進(jìn)程號, 93975 表示有問題的線程號

image.png

-A 10表示多打印10行戚长,這個可以根據(jù)不同情況設(shè)置

Windows環(huán)境

推薦使用JDK自帶的工具Java Visual VM盗冷,一般就是這貨,在JDK的bin目錄下

image.png

點(diǎn)開之后


image.png

左側(cè)會顯示現(xiàn)在正在運(yùn)行的Java進(jìn)程同廉,我們隨便點(diǎn)開一個


image.png

可以看到此進(jìn)程的一些運(yùn)行信息仪糖,下面關(guān)注我們的問題,直接查看CPU的使用情況

image.png

可以清晰的看到CPU時間占用最多的線程迫肖,現(xiàn)在就還是利用jstack來定位具體是哪個方法
jstack.exe -l 6964 >dump.stack
然后就在輸出文件中查找對應(yīng)線程名即可锅劝。

上面就是一些對CPU占用問題的簡單介紹,感謝閱讀蟆湖!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末故爵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子隅津,更是在濱河造成了極大的恐慌诬垂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伦仍,死亡現(xiàn)場離奇詭異结窘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)充蓝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門隧枫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谓苟,你說我怎么就攤上這事官脓。” “怎么了涝焙?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵卑笨,是天一觀的道長。 經(jīng)常有香客問我仑撞,道長湾趾,這世上最難降的妖魔是什么芭商? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮搀缠,結(jié)果婚禮上铛楣,老公的妹妹穿的比我還像新娘。我一直安慰自己艺普,他們只是感情好簸州,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著歧譬,像睡著了一般岸浑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瑰步,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天矢洲,我揣著相機(jī)與錄音,去河邊找鬼缩焦。 笑死读虏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袁滥。 我是一名探鬼主播盖桥,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼题翻!你這毒婦竟也來了揩徊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤嵌赠,失蹤者是張志新(化名)和其女友劉穎塑荒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姜挺,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡齿税,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了初家。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偎窘。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡乌助,死狀恐怖溜在,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情他托,我是刑警寧澤掖肋,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站赏参,受9級特大地震影響志笼,放射性物質(zhì)發(fā)生泄漏沿盅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一纫溃、第九天 我趴在偏房一處隱蔽的房頂上張望腰涧。 院中可真熱鬧,春花似錦紊浩、人聲如沸窖铡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽费彼。三九已至,卻和暖如春口芍,著一層夾襖步出監(jiān)牢的瞬間箍铲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工鬓椭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颠猴,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓膘融,卻偏偏與公主長得像芙粱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子氧映,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

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