精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

記一次艱難的GC問題排查!

運(yùn)維 網(wǎng)絡(luò)運(yùn)維
最近在我的項(xiàng)目中就出現(xiàn)了一個比較奇葩的gc問題,排查過程比較繁瑣,所以在這里分享一下這個整個排查過程,希望對大家有一定的幫助。

[[399235]]

本文轉(zhuǎn)載自微信公眾號「咖啡拿鐵」,作者咖啡拿鐵。轉(zhuǎn)載本文請聯(lián)系咖啡拿鐵公眾號。

 背景

gc問題一直是一個很難排查的問題,但是他又是一個經(jīng)常在我們開發(fā)業(yè)務(wù)中出現(xiàn)的。這不,最近在我的項(xiàng)目中就出現(xiàn)了一個比較奇葩的gc問題,排查過程比較繁瑣,所以在這里分享一下這個整個排查過程,希望對大家有一定的幫助

排查過程

確定GC出問題

在某一天的上午突然出現(xiàn)了報警,發(fā)現(xiàn)是ZK斷開了鏈接,

從圖上看我們這個錯誤是間斷性的出現(xiàn),最開始以為是zk出現(xiàn)了問題,后來經(jīng)過排查其他服務(wù)的zk并沒有出現(xiàn)任何問題。所以就懷疑是內(nèi)部的代碼出現(xiàn)問題導(dǎo)致的,研究之后發(fā)現(xiàn)是zk出現(xiàn)了心跳超時情況才導(dǎo)致的斷開鏈接,所以就懷疑了兩種情況:

  • 網(wǎng)絡(luò)有抖動
  • 機(jī)器間歇性卡死

如果網(wǎng)絡(luò)有抖動的話的確是會出現(xiàn)偶發(fā)性超時,但是很明顯,其他所有的服務(wù)都沒問題,應(yīng)該不是抖動導(dǎo)致。所以機(jī)器應(yīng)該是間歇性的一個卡死,一般出現(xiàn)這個情況首當(dāng)其沖的就是我們CPU被打滿了,導(dǎo)致機(jī)器卡死,發(fā)現(xiàn)CPU并無問題,然后就是我們的gc帶來的STW,會導(dǎo)致我們的jvm進(jìn)程卡頓。

觀察之后的確是young gc很慢,導(dǎo)致我們的JVM發(fā)生了GC卡頓,所以出現(xiàn)了這個現(xiàn)象。

排查原因

GC出現(xiàn)問題一般來說兩大法寶可以解決大部分問題:

  • GC日志
  • dump文件

出現(xiàn)問題之后我立馬打開了GC日志,截圖如下:

可以發(fā)現(xiàn)我們的young gc已經(jīng)達(dá)到2.7s了,大家知道我們的young gc是全程STW的,那就意味著每次gc就會卡頓2.7s,那么zk超時斷開鏈接也就符合正常了。再看了下這個gc收集情況,每次也能完全收集。在日志中很明顯在root scanning的時間比較長,當(dāng)時對這個階段不太熟悉(后面會繼續(xù)講),所以一直也不明白為什么這樣,在網(wǎng)上各種搜索,也沒有結(jié)論。

這個時候我在why哥公眾號讀到了一篇文章:https://mp.weixin.qq.com/s/KDUccdLALWdjNBrFjVR74Q, 建議大家可以閱讀一下這篇文章,這個文章中主要談到了我們jvm的一個優(yōu)化,大家都知道我們進(jìn)入STW的時候是需要一個安全點(diǎn)才可以的,而詢問是否進(jìn)入到安全點(diǎn)是需要耗費(fèi)資源的,所以jvm在做jit優(yōu)化的時候會講counted loop 也就是計(jì)數(shù)循環(huán)優(yōu)化成整個循環(huán)結(jié)束之后再進(jìn)入安全點(diǎn),在小米的技術(shù)文章中也提到了相關(guān)的問題:《HBase實(shí)戰(zhàn):記一次Safepoint導(dǎo)致長時間STW的踩坑之旅》 。

看完這兩個文章之后,我突然想到了我們的代碼也是counted loop的形式,所以就懷疑有可能也是這個問題導(dǎo)致的,馬上進(jìn)行代碼優(yōu)化,將for(int i = 0; i< n; i++) 中的int 換成了long,就可以避免這種jit的優(yōu)化,馬上興沖沖的將其上線,結(jié)果過了一天之后依然存在這個問題,此時人都快崩潰,搞了半天原來不是這個問題導(dǎo)致的。

定位問題

對于G1之前只是看了些原理相關(guān)的,但是此時原理相關(guān)的東西好像在這里基本沒啥用,所以我決定系統(tǒng)性的學(xué)習(xí)一下,這里我選擇的是《jvm G1源碼分析和調(diào)優(yōu)》這本書,在讀到5.4節(jié)的時候:

發(fā)現(xiàn)有兩個之前沒有見過的參數(shù),一個是G1LogLevel,一個是UnlockExperimentalVMOptions,從解釋說明上來看配置了之后能獲取到更加詳細(xì)的YGC日志,于是加上了這個參數(shù)然后繼續(xù)觀察,日志格式太長,只截取了部分日志信息,有興趣的可以下來自己打印一下:

可以發(fā)現(xiàn)在SystemDictionary Roots階段是比較慢的,但是這個又是啥玩意呢?在書里面是沒有任何介紹的,于是又進(jìn)行大量谷歌,終于是找到了一篇你假笨寫的一篇文章:JVM源碼分析之自定義類加載器如何拉長YGC,強(qiáng)烈推薦大家讀完這篇文章。

好了最后我來盤一盤到底為什么會出現(xiàn)gc慢的問題呢?我們這個定時任務(wù)是一個定時查詢微信退款信息的,微信的退款信息需要解析XML,就有如下代碼:

而我們的罪魁禍?zhǔn)灼鋵?shí)就在這個new XStream這個方法中,我們的默認(rèn)構(gòu)造方法會調(diào)用下面的這個構(gòu)造方法:

需要注意的是我們每次創(chuàng)建一個XStream都會新創(chuàng)建一個ClassLoader,先解釋一下ClassLoader,這里直接引用你假笨的一段話:

這里著重要說的兩個概念是初始類加載器和定義類加載器。舉個栗子說吧,AClassLoader->BClassLoader->CClassLoader,表示AClassLoader在加載類的時候會委托BClassLoader類加載器來加載,BClassLoader加載類的時候會委托CClassLoader來加載,假如我們使用AClassLoader來加載X這個類,而X這個類最終是被CClassLoader來加載的,那么我們稱CClassLoader為X類的定義類加載器,而AClassLoader為X類的初始類加載器,JVM在加載某個類的時候?qū)ClassLoader和CClassLoader進(jìn)行記錄,記錄的數(shù)據(jù)結(jié)構(gòu)是一個叫做SystemDictionary的hashtable,其key是根據(jù)ClassLoader對象和類名算出來的hash值(其實(shí)是一個entry,可以根據(jù)這個hash值找到具體的index位置,然后構(gòu)建一個包含kalssName和classloader對象的entry放到map里),而value是真正的由定義類加載器加載的Klass對象,因?yàn)槌跏碱惣虞d器和定義類加載器是不同的classloader,因此算出來的hash值也是不同的,因此在SystemDictionary里會有多項(xiàng)值的value都是指向同一個Klass對象。

我們把這個放到我們的場景來看就是下面這個情況:

由于我們每次請求都會新創(chuàng)建一個Xstream對象,從而也會新創(chuàng)建一個ClassLoader,由于我們的ClassLoader的key是根據(jù)每個對象來算出來的hash值,如果每次都新創(chuàng)建,自然hash值不一樣,從而導(dǎo)致我們有很多ClassLoader指向XStream這個class。為什么SystemDictionary的大小會影響我們GC時間呢?

想象一下這么個情況,我們加載了一個類,然后構(gòu)建了一個對象(這個對象在eden里構(gòu)建)當(dāng)一個屬性設(shè)置到這個類(static變量)里,如果gc發(fā)生的時候,這個對象是不是要被找出來標(biāo)活才行,那么自然而然我們加載的類肯定是我們一項(xiàng)重要的gc root,這樣SystemDictionary就成為了gc過程中的被掃描對象了。

我們的class信息是被分配在哪里的呢?在java7的話是在永久代,在java8就來到了元數(shù)據(jù)空間也就是我們的堆上,所以我們的young gc的時候是不會回收我們的class信息的,那么我們怎么解決這個問題呢?

  • java7: 在G1垃圾收集器中,只有在進(jìn)行full GC的時候,永久代才會被回收,這一過程是stop-the-world的。當(dāng)不做Full GC的時候,G1運(yùn)行是最優(yōu)化的。只有當(dāng)永久代滿了或者應(yīng)用分配內(nèi)存的速度超過了G1回收垃圾的速度的時候,G1才會觸發(fā)Full GC。在CMS垃圾收集器中,我們可以使用-XX:+CMSClassUnloadingEnabled在CMS concurrent cycle中回收集永久代。在G1里面沒有對應(yīng)的設(shè)置。G1只有在stop-the-world的Full GC的時候,才會回收永久代。我們可以根據(jù)應(yīng)用的需要,設(shè)置PermSize和MaxPermSize參數(shù)來調(diào)優(yōu)永久代的大小。
  • java8:提供了四個參數(shù)-XX:MetaspaceSize,-XX:MaxMetaspaceSize,-XX:MinMetaspaceFreeRatio,-XX:MaxMetaspaceFreeRatio用來控制元空間的大小,當(dāng)超過比例或者大小的時候就會進(jìn)行收集。

但是我們這個問題不應(yīng)該通過垃圾收集去解決,而是應(yīng)該從根源上去解決,那就是不能使用默認(rèn)的XStream構(gòu)造函數(shù),而是需要使用固定ClassLoader的構(gòu)造函數(shù)。

經(jīng)過修改之后上線,經(jīng)過觀察,沒有出現(xiàn)慢GC的現(xiàn)象。

最后

經(jīng)過這次排查的經(jīng)驗(yàn)來看,遇到GC問題尤其是那種比較不常見的,真的是非常難搞,你可能需要對這個問題進(jìn)行系統(tǒng)的學(xué)習(xí),以及大量的查找資料才能找到原因,我在排查這個問題的時候掉了不少頭發(fā)。在這里記錄一下這個經(jīng)驗(yàn),希望對大家以后的一些排查能有幫助。

 

責(zé)任編輯:武曉燕 來源: 咖啡拿鐵
相關(guān)推薦

2023-04-06 07:53:56

Redis連接問題K8s

2021-03-29 12:35:04

Kubernetes環(huán)境TCP

2021-11-23 21:21:07

線上排查服務(wù)

2019-03-15 16:20:45

MySQL死鎖排查命令

2023-01-04 18:32:31

線上服務(wù)代碼

2022-02-08 17:17:27

內(nèi)存泄漏排查

2017-12-19 14:00:16

數(shù)據(jù)庫MySQL死鎖排查

2024-04-10 08:48:31

MySQLSQL語句

2021-04-13 08:54:28

dubbo線程池事故排查

2022-11-03 16:10:29

groovyfullGC

2022-11-16 08:00:00

雪花算法原理

2022-12-17 19:49:37

GCJVM故障

2024-03-11 08:51:08

JVMSWAP內(nèi)存

2009-03-20 10:58:47

2019-09-10 10:31:10

JVM排查解決

2020-11-16 07:19:17

線上函數(shù)性能

2023-10-11 22:24:00

DubboRedis服務(wù)器

2021-05-31 10:08:44

工具腳本主機(jī)

2011-01-27 09:19:14

Mono開發(fā)

2023-01-05 11:44:43

性能HTTPS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

在线播放一区二区三区| 性生活视频软件| 国产中文在线| 日韩免费在线电影| 午夜精品影院| 在线免费观看日韩欧美| 91在线精品视频| 一区二区不卡免费视频| 欧美精品日韩少妇| 欧美亚洲一区二区三区| 日韩欧美一区二区免费| 天堂一区二区三区| 久草福利资源在线观看| 国语自产精品视频在线看抢先版结局| 99久久久国产精品| 精品中文字幕乱| 一区二区三区 日韩| 天堂在线观看免费视频| 亚洲国产精品久久久天堂| 色悠久久久久综合欧美99| 91社区国产高清| 日本一级黄色录像| 中文字幕一区二区三区中文字幕 | 欧美日韩精品在线观看| 91久久在线播放| 亚洲第一在线播放| 欧美激情极品| 亚洲二区视频在线| 成人av免费在线看| 国产少妇在线观看| 国产美女精品视频免费播放软件 | 国语精品免费视频| 91精品一区二区三区蜜桃| 免费高潮视频95在线观看网站| 国产乱色国产精品免费视频| 中文日韩在线观看| 在线观看的毛片| 狠狠操一区二区三区| 99精品欧美一区二区三区小说| 久久久久久久久久久久久久久久久久av | 日本少妇xxxx| heyzo在线| 95精品视频在线| 超碰97在线资源| 国产免费的av| 欧美日韩一视频区二区| 日韩欧美国产综合在线一区二区三区 | 三上悠亚ssⅰn939无码播放 | 亚洲一区二区三区四区在线 | 国产成人精品免费看视频| 影视一区二区| 欧美精品一区二区三| 黄页网站大全在线观看| 头脑特工队2在线播放| 午夜在线视频观看日韩17c| 欧美黑人一级爽快片淫片高清| 少妇一级淫免费观看| 欧美精品高清| 综合久久综合久久| 国产福利不卡| 国产免费av一区| 国产精品入口66mio| 中文在线资源观看视频网站免费不卡 | 精品少妇人妻av一区二区| 国产精品天天操| 国语精品一区| 亚洲最新中文字幕| 欧美xxxx黑人| 在线手机中文字幕| 亚洲欧美成人一区二区三区| 粉嫩高清一区二区三区精品视频 | 久久免费视频播放| 美女精品一区最新中文字幕一区二区三区 | 香蕉视频免费版| 少妇高潮一区二区三区99小说| 国产mv日韩mv欧美| 欧美与欧洲交xxxx免费观看| 无码 人妻 在线 视频| 色噜噜成人av在线| 91精品国产一区二区三区蜜臀 | а天堂中文在线资源| 91麻豆精品国产91久久久久推荐资源 | 亚洲精品人成| 亚洲免费成人网| 免费观看成人av| 久久久久久伊人| 91蜜桃视频在线观看| 久久精品亚洲欧美日韩精品中文字幕| 久久久av亚洲男天堂| 色综合久久五月| 国产亚洲一区| 亚洲国产日韩欧美在线99| 中文字幕一区二区三区四区在线视频| 在线免费观看a视频| 国产免费观看久久| 国精产品一区二区| 精品人妻一区二区三区麻豆91| 爽爽淫人综合网网站| 韩日精品中文字幕| 成年人av电影| 99久久www免费| 这里只有精品久久| 久草成人在线视频| 日韩二区三区四区| 秋霞午夜一区二区| 免费在线观看黄网站| 日韩精品国产欧美| 国产经品一区二区| 在线中文资源天堂| 国产日韩精品一区二区浪潮av| 国产一区二区三区奇米久涩 | 久久久久久久综合狠狠综合| 99re资源| 69久久久久| 欧美日韩精品二区| 免费高清视频在线观看| 人人玩人人添人人澡欧美| 亚洲高清一区二| 亚洲激情 欧美| 999成人网| 久久久精品国产亚洲| 国内自拍视频在线播放| 国产欧美91| 444亚洲人体| 性欧美18一19性猛交| 国产日韩欧美精品电影三级在线| 男人添女荫道口女人有什么感觉| 在线黄色网页| 欧美巨大另类极品videosbest| 欧美伦理片在线观看| 欧美黑人做爰爽爽爽| 久久久久久久香蕉网| 国产精品老熟女视频一区二区| 久久精品视频免费| 精品少妇人欧美激情在线观看| 日本乱理伦在线| 五月天中文字幕一区二区| 伊人狠狠色丁香综合尤物| а√天堂官网中文在线| 午夜精品在线看| 亚洲成人av免费观看| 99视频精品视频高清免费| 国产精品久久久91| 国产精品久久免费| ㊣最新国产の精品bt伙计久久| 9久久婷婷国产综合精品性色 | 国产一级精品视频| 久久精品一区二区国产| 国产精品视频99| 国产精品无码一区二区桃花视频| 国产欧美日韩一区二区三区在线观看| 成人观看免费完整观看| 欧美激情喷水| 日韩一区二区三区四区五区六区| 成年女人免费视频| 久久97视频| 国产成人精品av| jlzzjlzzjlzz亚洲人| 亚洲欧美一区二区三区孕妇| 国产视频九色蝌蚪| 国产精品麻豆成人av电影艾秋| 亚洲日本中文字幕| 久久久久99精品成人片试看| 国产老妇另类xxxxx| 国产青草视频在线观看| 999国产精品一区| 91av在线国产| 国产绿帽刺激高潮对白| 亚洲男人的天堂在线观看| 中文字幕在线观看日| 六月丁香久久丫| 久久精彩免费视频| 精品免费久久久| 精品高清美女精品国产区| 少妇真人直播免费视频| 99精品视频在线观看免费播放| 国产精品一区二区三区久久久| 丰满人妻熟女aⅴ一区| 亚洲成av人影院| 亚洲精品成人无码熟妇在线| 久久国产精品99久久久久久老狼 | 日本国产欧美一区二区三区| 久久伊伊香蕉| 亚洲成人第一页| 最近中文字幕免费视频| 久久99热这里只有精品| 日韩亚洲欧美视频| 欧美精品一区二区久久| 97精品视频在线| av在线女优影院| 欧美性色xo影院| 国产白袜脚足j棉袜在线观看| 四季av一区二区凹凸精品| 99久久伊人精品影院| 日本在线视频不卡| 亚洲精品中文在线影院| 91久久久久久久久久久| 日本aa在线| 在线观看日韩精品| 色哟哟一一国产精品| 久久久国产精品一区二区中文| 日韩在线观看电影完整版高清免费| 成人在线视频免费看| 亚洲视频在线看| 99久久夜色精品国产亚洲| 日韩人在线观看| 国产精品成人免费观看| 久久精品亚洲一区二区三区浴池| 中文字幕第38页| 99国产精品免费视频观看| 国产精品日韩一区二区三区| 亚洲羞羞网站| 国产亚洲欧洲高清一区| 少妇太紧太爽又黄又硬又爽| 亚洲欧洲日韩综合一区二区| av网站有哪些| 国产成人8x视频一区二区| 五月婷婷深爱五月| 99国产精品| 久久一区二区三区欧美亚洲| jizzjizz中国精品麻豆| 久久精品国产亚洲一区二区| 水莓100国产免费av在线播放| 日韩午夜在线观看| 夜夜爽8888| 亚洲乱码日产精品bd| 日韩丰满少妇无码内射| 99综合电影在线视频| 色欲无码人妻久久精品| 精品一区二区在线观看| 天天操天天摸天天爽| 美女久久网站| 日韩av片在线看| 欧美理论视频| 欧美日韩精品中文字幕一区二区| 国产日韩另类视频一区| 97色在线视频| a级片在线免费观看| 欧美激情伊人电影| 欧美精品videosex| 精品自拍视频在线观看| 国产超级va在线视频| 久久精品99久久久香蕉| 免费在线看黄网站| 日韩在线小视频| 亚洲国产精品一| 日韩欧美中文字幕制服| 精品人妻无码一区二区| 日韩色在线观看| 亚洲第一天堂网| 精品免费视频.| 久久久久亚洲视频| 亚洲日本欧美天堂| 97成人资源站| 亚洲美女免费在线| 久草视频免费在线| 亚洲一区二区三区三| 国产一级大片在线观看| 亚洲成人午夜影院| 日本一级一片免费视频| 欧美午夜宅男影院在线观看| 无码免费一区二区三区| 亚洲欧洲av一区二区三区久久| 国产探花视频在线| 成人高清视频免费观看| 男女视频在线看| 久久国产尿小便嘘嘘| 伊人成色综合网| 亚洲免费中文| 天天操天天爱天天爽| 久久99精品国产91久久来源| 性鲍视频在线观看| gogogo免费视频观看亚洲一| 亚洲AV无码国产成人久久| 国产精品人成在线观看免费| 国产女人18毛片水真多18| 久久综合九色欧美综合狠狠| 性生交大片免费看l| 免费久久99精品国产| 被黑人猛躁10次高潮视频| 不卡av免费在线观看| av电影在线不卡| 91美女片黄在线观看91美女| 亚洲成人av免费观看| 99久久精品国产网站| 色噜噜噜噜噜噜| 久久久综合精品| 尤物在线免费视频| 图片区日韩欧美亚洲| 中文字幕欧美人妻精品一区蜜臀| 疯狂做受xxxx欧美肥白少妇| 中文字幕av在线免费观看| 欧美一区二区福利在线| 亚洲av成人无码久久精品老人 | 久久九九免费视频| av资源中文在线天堂| 国产欧美精品一区二区| 国产精品nxnn| 91免费版网站在线观看| 人妖一区二区三区| 9999在线观看| 麻豆久久精品| 国产白袜脚足j棉袜在线观看| 中文欧美字幕免费| 国产午夜福利一区| 亚洲自拍偷拍图区| 九九免费精品视频| 色综合天天综合给合国产| 国产日韩免费视频| 亚洲性av在线| 国产精选在线| 91黄在线观看| 99久久99久久精品国产片果冰| 国产在线精品91| 国产高清不卡一区| 能看毛片的网站| 国产视频一区在线观看| 天天操天天射天天爽| 欧美久久一二区| eeuss影院在线观看| 欧洲成人免费视频| 卡通动漫精品一区二区三区| 神马午夜伦理影院| 欧美日韩三级| 蜜桃福利午夜精品一区| 国产精品一卡二卡在线观看| 公肉吊粗大爽色翁浪妇视频| 精品久久久久人成| 刘玥91精选国产在线观看| 久久精品国产视频| 亚洲福利影视| 亚洲人体一区| 欧美精选一区| www.com久久久| 国产精品色哟哟网站| 国产一区二区视频网站| 亚洲精品日韩欧美| www.成人.com| 国产精品白嫩美女在线观看 | 极品美女销魂一区二区三区免费 | 800av免费在线观看| 欧美成人性战久久| 神马午夜伦理不卡| 99se婷婷在线视频观看| 欧美1区视频| 又黄又色的网站| 亚洲五码中文字幕| 色婷婷在线视频| 日本不卡视频在线播放| 少妇精品久久久| 国产成人精品无码播放| 久久福利视频一区二区| 波多野结衣家庭教师在线观看| 91搞黄在线观看| www.五月天激情| 九九综合九九综合| av成人资源| 欧美又粗又长又爽做受| 夜夜嗨一区二区| 成人精品在线观看视频| 欧美性少妇18aaaa视频| 成人好色电影| 成人福利视频在线观看| 婷婷国产精品| 六月婷婷激情网| 粉嫩在线一区二区三区视频| 久久精品这里有| 欧美日韩一级片网站| 国产成人手机在线| 97久久久久久| 欧洲福利电影| 亚洲色图欧美自拍| 久久免费偷拍视频| 天天天天天天天干| 亚洲国产欧美在线成人app| 伊人久久在线| 国产伦精品一区二区三区四区视频| 亚洲精品乱码| 国产又黄又嫩又滑又白| 天天综合天天做天天综合| 国自产拍在线网站网址视频| 国产欧美一区二区白浆黑人| 日韩大尺度在线观看| 午夜免费精品视频| 成人av网站免费| 久久夜色精品国产噜噜亚洲av| 在线观看91久久久久久| 久久综合偷偷噜噜噜色| 亚洲精品成人自拍| 国产激情视频一区二区在线观看| 中文字幕亚洲高清| 色av吧综合网| 久久黄色影视| 国产三级三级看三级| 亚洲图片有声小说| 生活片a∨在线观看| 日韩美女中文字幕| 亚洲激情播播| 国产美女无遮挡网站| 中文字幕一区二区三区在线不卡|