java應用cpu使用率過高問題排查

---------------------------------------linux下如何定位代碼問題-------------------------------

1借嗽、先通過top命令找到消耗cpu很高的進程id假設是123

2浆竭、執(zhí)行top -p 123單獨監(jiān)控該進程

3兆蕉、在第2步的監(jiān)控界面輸入H虎韵,獲取當前進程下的所有線程信息

4包蓝、找到消耗cpu特別高的線程編號测萎,假設是123

5硅瞧、執(zhí)行jstack 123456對當前的進程做dump腕唧,輸出所有的線程信息

6 將第4步得到的線程編號11354轉(zhuǎn)成16進制是0x7b

7 根據(jù)第6步得到的0x7b在第5步的線程信息里面去找對應線程內(nèi)容

8 解讀線程信息颂暇,定位具體代碼位置

-----------------------------分割線----------------------------------------------

最近在壓力測試工作中碰到java應用某臺機器cpu比較高的情況,特地下筆記以后總結(jié):

一個簡單的淘寶認證接口 需要插入讀寫數(shù)據(jù)庫2次。每次爬取數(shù)據(jù)县爬,入庫捌省。完成。

正常情況下:

應用使用cpu在 :50%--80%

壓力高--異常情況下:

cpu利用率在:90%---90%

在網(wǎng)上查了下祝高,一般java應用cpu過高基本上是因為

1.程序計算比較密集

2.程序死循環(huán)

3.程序邏請求堵塞
4.IO讀寫太高

方法一:

分析步驟:

1.登陸應用機器,top -d 1命令查看 當前占用cpu資源最多的陆蟆,一般排名第一位肯定是java進程

一般也可能存在多個java進程


image.png

觀察 top 消耗第一的資源是PID=1679的線程

2.查看進程的哪個線程占用cpu比較高,取線上另外一臺正常情況下利用cpu比較高的應用:通過

ps -mp pid -o THREAD,tid,time命令查看該進程的線程情況


image.png

通過以上線程CPU切片 耗時在pid=1679 Tid =1896 耗時 1分59秒,4%CPU占用最大像棘。時間最長。

TID為1679的線程利用cpu資源比較多烟零,怎么能看到這個線程在干什么呢?

需要將1896 轉(zhuǎn)換為16進制,便于在jvm堆棧中查找毫胜。

printf "%x\n" 1896 ----768

通過jstack命令來查看下當前內(nèi)存狀態(tài):

定位到cpu過高是IO讀寫太高 ,接下來就是找開發(fā)人員確認這段代碼是否可以優(yōu)化。


image.png

方法二:

在做壓測的時候,開發(fā)給了一個工具 show-busy-java-threads.sh

在排查Java的CPU性能問題時缺脉,找出Java進程中消耗cpu多(top us值過高)的線程,查看它的線程棧,從而找出有性能問題的方法調(diào)用瞬沦。

截取一段

image.png

...................后面略
其實就是個shell文件,把這個文件上傳到目標服務器(linux),記得更改文件的讀寫權(quán)限: chmod -R 777 show-busy-java-threads.sh

附:腳本鏈接https://download.csdn.net/download/qq_34944965/13780146

接方法一 top之后叠赐,只需要下命令 :./show-busy-java-threads.sh -p pid 后面CPU占用高的定位就分析出來了赛不,具體如圖

————————————————
版權(quán)聲明:本文為CSDN博主「小轱轆.」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議殿较,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_34944965/article/details/81107419

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伙窃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鳍怨,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骗奖,死亡現(xiàn)場離奇詭異确徙,居然都是意外死亡,警方通過查閱死者的電腦和手機执桌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門鄙皇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仰挣,你說我怎么就攤上這事伴逸〈砗” “怎么了肛宋?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長漫玄。 經(jīng)常有香客問我,道長菱阵,這世上最難降的妖魔是什么琳钉? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任钾虐,我火速辦了婚禮菌仁,結(jié)果婚禮上峡碉,老公的妹妹穿的比我還像新娘。我一直安慰自己荠列,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布笛臣。 她就那樣靜靜地躺著,像睡著了一般角撞。 火紅的嫁衣襯著肌膚如雪著觉。 梳的紋絲不亂的頭發(fā)上烂斋,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天桃犬,我揣著相機與錄音每币,去河邊找鬼秸侣。 笑死椭坚,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的考榨。 我是一名探鬼主播限府,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼痢缎!你這毒婦竟也來了胁勺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤独旷,失蹤者是張志新(化名)和其女友劉穎署穗,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嵌洼,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡案疲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了咱台。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片络拌。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖回溺,靈堂內(nèi)的尸體忽然破棺而出春贸,到底是詐尸還是另有隱情,我是刑警寧澤遗遵,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布萍恕,位于F島的核電站,受9級特大地震影響车要,放射性物質(zhì)發(fā)生泄漏允粤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一翼岁、第九天 我趴在偏房一處隱蔽的房頂上張望类垫。 院中可真熱鬧,春花似錦琅坡、人聲如沸悉患。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽售躁。三九已至坞淮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陪捷,已是汗流浹背回窘。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留市袖,地道東北人啡直。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像凌盯,于是被迫代替她去往敵國和親付枫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

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