FGC排查基礎(chǔ)知識(shí)

排查思路及常用命令

1矾睦、查看java進(jìn)程

ps -ef | grep java

jps

2税娜、檢查JVM配置

ps aux | grep "applicationName=adsearch"

3北救、查看堆內(nèi)存情況

jmap -heap 進(jìn)程ID | head -n20

4兑凿、觀察老年代的內(nèi)存使用情況剩蟀,推測(cè)可能原因

GC后的短時(shí)間能夠恢復(fù)到一定值,即可排除是內(nèi)存泄露

5荔仁、jmap查看堆內(nèi)存中的對(duì)象信息

jmap -histo 進(jìn)程ID | head -n20

6、dump堆內(nèi)存文件

jmap -dump:format=b,file=heap 進(jìn)程ID

7芽死、用分析工具分析dump文件

jhat乏梁、JVisualVM

找到大對(duì)象

8、最后通過(guò)代碼分析可疑對(duì)象

.

GC會(huì)對(duì)程序產(chǎn)生影響

  • FGC過(guò)于頻繁:導(dǎo)致工作線程頻繁被停止关贵,讓系統(tǒng)看起來(lái)一直有卡頓現(xiàn)象掌呜,也會(huì)使得程序的整體性能變差

  • YGC耗時(shí)過(guò)長(zhǎng):卡頓時(shí)間就會(huì)增大,加上YGC本身比較頻繁坪哄,就會(huì)導(dǎo)致比較多的服務(wù)超時(shí)問(wèn)題

  • FGC耗時(shí)過(guò)長(zhǎng):卡頓時(shí)間增加质蕉,尤其對(duì)于高并發(fā)服務(wù)势篡,可能導(dǎo)致FGC期間比較多的超時(shí)問(wèn)題,可用性降低

  • YGC過(guò)于頻繁:降低服務(wù)的整體性能

.

導(dǎo)致FGC的原因

  • 大對(duì)象:系統(tǒng)一次性加載了過(guò)多數(shù)據(jù)到內(nèi)存中(比如SQL查詢未做分頁(yè))模暗,導(dǎo)致大對(duì)象進(jìn)入了老年代禁悠。

  • 內(nèi)存泄漏:頻繁創(chuàng)建了大量對(duì)象,但是無(wú)法被回收(比如IO對(duì)象使用完后未調(diào)用close方法釋放資源)兑宇,先引發(fā)FGC碍侦,最后導(dǎo)致OOM。

  • 程序頻繁生成一些長(zhǎng)生命周期的對(duì)象隶糕,當(dāng)這些對(duì)象的存活年齡超過(guò)分代年齡時(shí)便會(huì)進(jìn)入老年代瓷产,最后引發(fā)FGC. (即本文中的案例)。

  • 程序BUG導(dǎo)致動(dòng)態(tài)生成了很多新類枚驻,使得 Metaspace 不斷被占用濒旦,先引發(fā)FGC,最后導(dǎo)致OOM再登。

  • 代碼中顯式調(diào)用了gc方法尔邓,包括自己的代碼甚至框架中的代碼。

  • JVM參數(shù)設(shè)置問(wèn)題:包括總內(nèi)存大小锉矢、新生代和老年代的大小梯嗽、Eden區(qū)和S區(qū)的大小、元空間大小沽损、垃圾回收算法等等灯节。

寫(xiě)完mybatis的SQL之后,一定要對(duì)各種 <if test> 進(jìn)行空值考慮绵估,我公司一次FGC就是因?yàn)檫@個(gè)導(dǎo)致的显晶,另外部門(mén)定時(shí)推送過(guò)來(lái)的訂單refId存在為空的情況,導(dǎo)致select的時(shí)候掃描全表幾千萬(wàn)條數(shù)據(jù)(還是分庫(kù)分表的壹士。磷雇。。)躏救,導(dǎo)致產(chǎn)生了很多實(shí)體類對(duì)象和mybatis緩存對(duì)象唯笙。
所以對(duì)于只有查詢一行的SQL語(yǔ)句,要加上limit 1盒使,防止 <if test> 條件為空而導(dǎo)致掃描全表數(shù)據(jù)

.

排查總結(jié)

  • 查看監(jiān)控崩掘,記錄出現(xiàn)問(wèn)題的時(shí)間點(diǎn)和FGC頻率

  • 了解該時(shí)間點(diǎn)有沒(méi)有上線版本

  • 查看JVM參數(shù)設(shè)置:堆空間各個(gè)區(qū)域的大小,采用哪些垃圾回收器少办,分析JVM參數(shù)是否合理

  • 對(duì)可能的原因進(jìn)行排除:元空間打滿苞慢、內(nèi)存泄露、代碼顯示調(diào)用gc

  • 通過(guò) jmap -histo 命令并結(jié)合dump堆內(nèi)存文件作進(jìn)一步分析是否存在大對(duì)象或者長(zhǎng)生命周期的對(duì)象

  • 通過(guò)可疑對(duì)象英妓,定位到具體代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挽放,一起剝皮案震驚了整個(gè)濱河市绍赛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辑畦,老刑警劉巖吗蚌,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纯出,居然都是意外死亡蚯妇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)暂筝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)箩言,“玉大人,你說(shuō)我怎么就攤上這事焕襟≡墒眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵胧洒,是天一觀的道長(zhǎng)畏吓。 經(jīng)常有香客問(wèn)我墨状,道長(zhǎng)卫漫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任肾砂,我火速辦了婚禮列赎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镐确。我一直安慰自己包吝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布源葫。 她就那樣靜靜地躺著诗越,像睡著了一般。 火紅的嫁衣襯著肌膚如雪息堂。 梳的紋絲不亂的頭發(fā)上嚷狞,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音荣堰,去河邊找鬼床未。 笑死,一個(gè)胖子當(dāng)著我的面吹牛振坚,可吹牛的內(nèi)容都是我干的薇搁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼渡八,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼啃洋!你這毒婦竟也來(lái)了传货?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤裂允,失蹤者是張志新(化名)和其女友劉穎损离,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绝编,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡僻澎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了十饥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窟勃。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逗堵,靈堂內(nèi)的尸體忽然破棺而出秉氧,到底是詐尸還是另有隱情,我是刑警寧澤蜒秤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布汁咏,位于F島的核電站,受9級(jí)特大地震影響作媚,放射性物質(zhì)發(fā)生泄漏攘滩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一纸泡、第九天 我趴在偏房一處隱蔽的房頂上張望漂问。 院中可真熱鬧,春花似錦女揭、人聲如沸蚤假。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)磷仰。三九已至,卻和暖如春境蔼,著一層夾襖步出監(jiān)牢的瞬間灶平,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工欧穴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留民逼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓涮帘,卻偏偏與公主長(zhǎng)得像拼苍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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