cpu使用率過(guò)高和jvm old占用過(guò)高排查過(guò)程

今天斷斷續(xù)續(xù)的收到管理平臺(tái)的異常報(bào)警市埋,cpu占用過(guò)高和jvm old占用過(guò)高肌蜻,這個(gè)時(shí)候趕緊去排查原因互墓,下面記錄了我的排查過(guò)程,可能里面還有不正確的地方蒋搜,歡迎各位大佬指正篡撵,也歡迎大家關(guān)于類似的案例一起交流判莉,下面就看我關(guān)于這次排查的過(guò)程把

報(bào)警

  1. cpu使用率過(guò)高報(bào)警,接近100%
  2. 后續(xù)又來(lái)了jvm old過(guò)高報(bào)警

排查過(guò)程

  1. 首先打開監(jiān)控平臺(tái)看報(bào)警節(jié)點(diǎn)的cpu使用情況
監(jiān)控pingcpu占用過(guò)高
  1. 登錄服務(wù)器找到占用 cpu過(guò)高線程堆棧信息

①通過(guò) top 命令找到占用cpu最高的 pid[進(jìn)程id]

top

定位到pid是 1469

②通過(guò) top -Hp pid 查看進(jìn)程中占用cpu過(guò)高的 tid[線程id]

③通過(guò) **printf pid |grep tid ** 把線程id轉(zhuǎn)化為十六進(jìn)制

④通過(guò) jstack pid | grep tid -A 30 定位線程堆棧信息

占用cpu過(guò)高的線程有兩個(gè)育谬,其中一個(gè)是打印異常日志的(會(huì)new 對(duì)象)券盅,還有g(shù)c線程

打印異常堆棧

這個(gè)占用cpu根據(jù)堆棧信息就可以定位,看下代碼斑司,可以發(fā)現(xiàn)new 對(duì)象渗饮,且打印全棧信息

異常代碼

其中ExceptionUtils.getFullStackTrace(e) 屬于commons.lang包

全棧信息

可以發(fā)現(xiàn)上面兩個(gè)方法會(huì)創(chuàng)建很多對(duì)象且打印堆棧信息占用內(nèi)存

gc線程

堆棧信息

可以發(fā)現(xiàn)占用cpu過(guò)高的線程進(jìn)行大量的gc

  1. 通過(guò) jstat -gcutil pid 時(shí)間間隔 查看 jc 信息
    gc信息

可以發(fā)現(xiàn)伊甸園區(qū)和老年代都已經(jīng)滿了,且進(jìn)行了大量的FGC

指標(biāo)介紹

S0:年輕代第一個(gè)幸存區(qū)(survivor)使用容量占用百分比

S1:年輕代第二個(gè)幸存區(qū)(survivor)使用容量占用百分比

E:年輕代伊甸園區(qū)(eden)使用容量占用百分比

O:老年代使用容量占用百分比

P:perm代使用容量占用百分比

YGC:從應(yīng)用程序啟動(dòng)到當(dāng)前采樣時(shí)年輕代gc的次數(shù)

YGCT:從應(yīng)用程序啟動(dòng)到當(dāng)前采樣時(shí)年輕代gc的時(shí)間

FGC:從應(yīng)用程序啟動(dòng)到當(dāng)前采樣時(shí)老年代gc的次數(shù)

FGCT:從應(yīng)用程序啟動(dòng)到當(dāng)前采樣時(shí)老年代gc的時(shí)間

GCT:從應(yīng)用程序啟動(dòng)到當(dāng)前采樣時(shí)gc總耗時(shí)

  1. 導(dǎo)出dump文件宿刮,使用jdk自帶的jvisualvm.exe分析

使用 jmap -dump:live,format=b,file=name.dump pid 導(dǎo)出dump文件互站,一般dump文件會(huì)比較大【我的這個(gè)2.94G】,然后下載【可以用 sz name.dump】到本地用jvisualvm【jdk自帶的僵缺,在bin目錄下】分析

首先看下dump文件的概要

dump概要

看看這些大對(duì)象都是什么

對(duì)象的類型

發(fā)現(xiàn)前面幾個(gè)大對(duì)象都和 ElastaicSearchStatusException對(duì)象有關(guān)胡桃,然后這個(gè)管理平臺(tái)用到es的地方只有一處,就是做數(shù)據(jù)漏斗磕潮,記錄廣告檢索在哪些步驟過(guò)濾掉翠胰,方便產(chǎn)品和運(yùn)營(yíng)查看廣告被過(guò)濾的原因,然后翻開代碼

構(gòu)造es

其中 RestClientFactory.getRestClient().search(searchRequest)的 search方法一步一步跟進(jìn)自脯,發(fā)現(xiàn)拋ElasticSearchStatusException的地方

ElasticSearchStatusException

其中parseResponseException方法會(huì)拋出ElasticSearchStatusException異常之景,至于這兩個(gè)地方具體是哪個(gè)步驟拋的,可以繼續(xù)研究es代碼判斷或者 遠(yuǎn)程debug判定膏潮,我這里先不管了锻狗,反正我們能知道es出問(wèn)題了

其實(shí)正是因?yàn)檫@里拋異常才會(huì)導(dǎo)致創(chuàng)建大量對(duì)象,因?yàn)楫惓T谏厦嫣岬降拇蛴‘惓H罩镜牡胤揭矔?huì)創(chuàng)建對(duì)象焕参,老年代占用過(guò)高轻纪,導(dǎo)致大量fgc

但es這里為何會(huì)有異常?

我登錄到es的管理平臺(tái)查看es的索引叠纷,發(fā)現(xiàn)有的索引沒(méi)有創(chuàng)建刻帚,索引的創(chuàng)建是有任務(wù)去創(chuàng)建并實(shí)時(shí)寫入數(shù)據(jù)的,發(fā)現(xiàn)那個(gè)任務(wù)已經(jīng)停了涩嚣。

處理過(guò)程

  1. 找到相關(guān)的任務(wù)重新啟動(dòng)崇众,并找任務(wù)停止的原因,修復(fù)缓艳,并把丟失的索引創(chuàng)建并修復(fù)數(shù)據(jù)
  2. 在異常日志打印那最好加入流控【用Guava.RateLimiter控制】

小結(jié)

jvm old區(qū)占用過(guò)高排查思路

  1. top查看占用cpu高的進(jìn)程
  2. jstat -gcutil pid 時(shí)間間隔 查看gc狀況
  3. jmap -dump:live,format=b,file=name.dump pid 導(dǎo)出dump文件
  4. 用visualVM分析dump文件

cpu占用過(guò)高排查思路

  1. top 查看占用cpu的進(jìn)程 pid

  2. top -Hp pid 查看進(jìn)程中占用cpu過(guò)高的線程id tid

  3. printf '%x/n' tid 轉(zhuǎn)化為十六進(jìn)制

  4. jstack pid |grep tid的十六進(jìn)制 -A 30 查看堆棧信息定位

歡迎關(guān)注公眾號(hào) 【每天曬白牙】校摩,獲取最新文章,我們一起交流阶淘,共同進(jìn)步衙吩!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市溪窒,隨后出現(xiàn)的幾起案子坤塞,更是在濱河造成了極大的恐慌冯勉,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摹芙,死亡現(xiàn)場(chǎng)離奇詭異灼狰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)浮禾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門交胚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人盈电,你說(shuō)我怎么就攤上這事蝴簇。” “怎么了匆帚?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵熬词,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我吸重,道長(zhǎng)互拾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任嚎幸,我火速辦了婚禮颜矿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嫉晶。我一直安慰自己或衡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布车遂。 她就那樣靜靜地躺著,像睡著了一般斯辰。 火紅的嫁衣襯著肌膚如雪舶担。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天彬呻,我揣著相機(jī)與錄音衣陶,去河邊找鬼。 笑死闸氮,一個(gè)胖子當(dāng)著我的面吹牛剪况,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒲跨,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼译断,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了或悲?” 一聲冷哼從身側(cè)響起孙咪,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤堪唐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后翎蹈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淮菠,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年荤堪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了合陵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡澄阳,死狀恐怖拥知,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寇荧,我是刑警寧澤举庶,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站揩抡,受9級(jí)特大地震影響户侥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜峦嗤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一蕊唐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烁设,春花似錦替梨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至恋谭,卻和暖如春糠睡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疚颊。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工狈孔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人材义。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓均抽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親其掂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子油挥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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