網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世-身世篇

網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世-身世篇

ID:44131819

大?。?63.70 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2019-10-18

網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世-身世篇_第1頁(yè)
網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世-身世篇_第2頁(yè)
網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世-身世篇_第3頁(yè)
網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世-身世篇_第4頁(yè)
網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世-身世篇_第5頁(yè)
資源描述:

《網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世-身世篇》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、網(wǎng)易視頻云技術(shù)分享:HBaseGC的前生今世?身世篇網(wǎng)易視頻云是網(wǎng)易傾力打造的一款基于互辻篡的分布式多媒體處理集群和專(zhuān)業(yè)音視頻技術(shù),提供穩(wěn)定流暢、低時(shí)延、高并發(fā)的視頻直播、錄制、存儲(chǔ)、轉(zhuǎn)碼及點(diǎn)播等音視頻的PAAS服務(wù),在線教育、遠(yuǎn)程醫(yī)療、娛樂(lè)秀場(chǎng)、在線金融等各行業(yè)及企業(yè)用戶只需經(jīng)過(guò)簡(jiǎn)單的開(kāi)發(fā)即可打造在線音視頻平臺(tái)?,F(xiàn)在,網(wǎng)易視頻云的技術(shù)專(zhuān)家給大家分享一則技術(shù)文:HBaseGC的前生今世?身世篇。在之前的HBaseBlockCache系列文章中已經(jīng)簡(jiǎn)單提到:使用LRUBIockCache緩存機(jī)制會(huì)因?yàn)镃MSGC策略導(dǎo)致內(nèi)存碎片過(guò)多從而可能引發(fā)臭名昭著的FullGC,觸發(fā)可怕的'sto

2、p-the?world'暫停,嚴(yán)重影響上層業(yè)務(wù);而B(niǎo)ucketCache緩存機(jī)制因?yàn)樵诔跏蓟臅r(shí)候就申請(qǐng)了一片定大小的內(nèi)存作為緩存,緩存淘汰不再由JVM管理,數(shù)據(jù)Block的緩存操作只是對(duì)這篇空間的訪問(wèn)和覆蓋,因而大大減少了內(nèi)存碎片的出現(xiàn)降低了FullGC發(fā)生的頻率。那CMSGC策略如何導(dǎo)致內(nèi)存碎片過(guò)多??jī)?nèi)存碎片過(guò)多如何觸發(fā)FullGC?HBase在演進(jìn)的道路上又如何不斷優(yōu)化CMSGC?接下來(lái)這個(gè)系列《HBaseGC的前生今生》將會(huì)為你一一揭開(kāi)謎底,這個(gè)系列一共兩篇文章,本篇文章?’身世篇'將會(huì)帶你全面了解HBase的GC機(jī)制,后面一篇?1演進(jìn)篇'將會(huì)給你道出HBase在發(fā)展的道路

3、上如何不斷對(duì)FullGC進(jìn)行優(yōu)化。JavaGCWzK整個(gè)HBase是構(gòu)建在JVM虛擬機(jī)上的,因此了解HBase的內(nèi)存管理機(jī)制以及不同緩存機(jī)制對(duì)GC的影響,就必須對(duì)JavaGC有一個(gè)全面的了解。至于深入地理解JavaGC的工作原理,不在本文的討論范圍之內(nèi);當(dāng)然,如果已經(jīng)對(duì)JavaGC比較熟悉,也可以跳過(guò)此節(jié)。JavaGC建立在這樣一個(gè)假設(shè)基礎(chǔ)上的:大多數(shù)內(nèi)存對(duì)象要么生存周期比較短,很快就會(huì)沒(méi)人引用,比如處理RPC請(qǐng)求的buffer可能只會(huì)生存幾微秒;要么生存周期比較長(zhǎng),比如BlockCache中的熱點(diǎn)Block,可能就會(huì)生存幾分鐘,甚至更長(zhǎng)時(shí)間?;谶@樣的事實(shí),JVM將整個(gè)堆內(nèi)存分為

4、兩個(gè)部分新生代(younggeneration)和老生代(tenuredgeneration),除此之外,JVM還有一個(gè)非堆內(nèi)存區(qū)?Perm區(qū),主要存放class信息以及其他meta元信息,內(nèi)存結(jié)構(gòu)如下圖所示:Ymjnr!T^nufAH,PermsoSIEden其中Young區(qū)又分為Eden區(qū)和兩個(gè)Survivor區(qū):S0和S1O—個(gè)內(nèi)存對(duì)象在創(chuàng)建之后,首先會(huì)為其在新生代申請(qǐng)一塊內(nèi)存空間,如果這個(gè)對(duì)象在新生代存活了很長(zhǎng)時(shí)間,會(huì)將其遷移到老生代。在大多數(shù)對(duì)延遲敏感的業(yè)務(wù)場(chǎng)景下(比如HBase),建議使用如下JVM參數(shù),?XX:+UseParNewGC和XX:+UseConcMarkS

5、weepGC,其中前者表示對(duì)新生代執(zhí)行并行的垃圾回收機(jī)制,而后者表示對(duì)老生代執(zhí)行并行標(biāo)記-清除垃圾回收機(jī)制??梢?jiàn),JVM允許針對(duì)不同內(nèi)存區(qū)執(zhí)行不同的GC策略。新生代GC策略_ParallelNewCollector根據(jù)上文所述,對(duì)象初始化之后會(huì)被放入Young區(qū),更具體的話應(yīng)該是Eden區(qū),當(dāng)Eden區(qū)滿了之后,會(huì)進(jìn)行一次GCoGC算法會(huì)檢查所有對(duì)象的引用情況,如果某個(gè)對(duì)象還有被引用,表示該對(duì)象存活。檢查完成之后,會(huì)將這些存活的對(duì)象移到SO區(qū),并且回收整個(gè)Eden區(qū)空間,稱(chēng)為一次MinorGC;接著新對(duì)象進(jìn)來(lái),又會(huì)放入Eden區(qū),滿了之后會(huì)檢查SO和Eden區(qū)存活的對(duì)象,將所有存活

6、的對(duì)象移到S1區(qū),再回收整個(gè)SO和Eden區(qū)空間;很容易理解,SO和S1兩個(gè)區(qū)總會(huì)有一個(gè)區(qū)是預(yù)留給下次存放存活對(duì)象用的。整個(gè)過(guò)程可以使用如下圖示:內(nèi)存垃圾□存活對(duì)菽第一次GC.JSEclen區(qū)満后,系狡檢囊所有的存活對(duì)欽(左圖綠色方塊),并將這些存活對(duì)氛童理之后移動(dòng)刑SO區(qū)。第二次GC,SEdenEMig充滴后,系統(tǒng)栓去Eden區(qū)&S0區(qū)的所有存活對(duì)ft(左圖綠色方塊),并將這童存活對(duì)后■動(dòng)到S】區(qū).這種算法稱(chēng)為復(fù)制算法,對(duì)于這種算法,有兩點(diǎn)需要關(guān)注:1.算法會(huì)執(zhí)行'stop-the?world'暫停,但時(shí)間非常短。因?yàn)閅oung區(qū)通常會(huì)設(shè)置的比較?。ㄒ话悴唤ㄗh不超過(guò)512M),而

7、且JVM會(huì)啟動(dòng)大量線程并發(fā)執(zhí)行,一次MinorGC—般都會(huì)在幾毫秒內(nèi)完成2.不會(huì)產(chǎn)生碎片,每次GC之后都會(huì)將存活的對(duì)象放入連續(xù)的空間(SO或S1)內(nèi)存中所有對(duì)象都會(huì)維護(hù)一個(gè)計(jì)數(shù)器,每次MinorGC移動(dòng)一個(gè)對(duì)象之后,都會(huì)為這個(gè)對(duì)象的計(jì)數(shù)器加一。當(dāng)計(jì)數(shù)器增加到一定閾值之后,算法就會(huì)認(rèn)為該對(duì)象生命周期很長(zhǎng),會(huì)將其移入老生代。該閾值可以通過(guò)JVM參數(shù)XX:MaxTenuringThreshold指定。老生代GC策略一ConcurrentMark-Sweep每次執(zhí)行Minor

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。