快手自研OOM解決方案KOOM今日宣布開(kāi)源
近日,快手宣布開(kāi)源KOOM,成為行業(yè)首個(gè)開(kāi)源線上內(nèi)存溢出(Out of Memory,以下簡(jiǎn)稱OOM)問(wèn)題解決方案的互聯(lián)網(wǎng)企業(yè)。據(jù)介紹,KOOM是在客戶端完成內(nèi)存監(jiān)控后,將解析報(bào)告上傳到云端,傳輸文件大小僅為KB級(jí),運(yùn)行時(shí)用戶無(wú)感知,對(duì)流量基本無(wú)影響,適合大規(guī)模普及應(yīng)用,目前該方案已在快手全量業(yè)務(wù)中應(yīng)用,OOM率降低了80%以上,效果顯著。OOM是當(dāng)前Android開(kāi)發(fā)中的常見(jiàn)疑難問(wèn)題,尤其是線上
2020-08-11 14:51:49
來(lái)源:釘科技??

近日,快手宣布開(kāi)源KOOM,成為行業(yè)首個(gè)開(kāi)源線上內(nèi)存溢出(Out of Memory,以下簡(jiǎn)稱OOM)問(wèn)題解決方案的互聯(lián)網(wǎng)企業(yè)。據(jù)介紹,KOOM是在客戶端完成內(nèi)存監(jiān)控后,將解析報(bào)告上傳到云端,傳輸文件大小僅為KB級(jí),運(yùn)行時(shí)用戶無(wú)感知,對(duì)流量基本無(wú)影響,適合大規(guī)模普及應(yīng)用,目前該方案已在快手全量業(yè)務(wù)中應(yīng)用,OOM率降低了80%以上,效果顯著。

OOM是當(dāng)前Android開(kāi)發(fā)中的常見(jiàn)疑難問(wèn)題,尤其是線上發(fā)生的OOM問(wèn)題極難定位。業(yè)界當(dāng)前最知名的方案LeakCanary,通過(guò)監(jiān)控Activity/Fragment泄漏優(yōu)化Java OOM問(wèn)題,多年來(lái)一直為廣大app保駕護(hù)航,解決了OOM治理從0到1的問(wèn)題。但面對(duì)行業(yè)不斷復(fù)雜的業(yè)務(wù)環(huán)境和龐大用戶流量,LeakCanary仍有優(yōu)化空間:受限于性能,無(wú)法在線上大規(guī)模部署,僅支持線下使用;只能定位Activity&Fragment泄漏,無(wú)法定位大對(duì)象、頻繁分配等問(wèn)題;需要人工一一分析,無(wú)法對(duì)問(wèn)題聚類(lèi)量化……為了徹底解決OOM問(wèn)題,行業(yè)嘗試了多種解決方案,通常是基于LeakCanary做優(yōu)化,但至今沒(méi)有能完全解決監(jiān)控過(guò)程中的性能問(wèn)題,普遍解決方法是通過(guò)采樣的辦法犧牲一小部分用戶的體驗(yàn)來(lái)定位問(wèn)題。

快手OOM  Killer沿用行業(yè)的研究思路,針對(duì)LeakCanary無(wú)法解決的難題進(jìn)行自研改造,充分發(fā)揮LeakCanary原有優(yōu)勢(shì)的同時(shí)補(bǔ)足短板,打造了一套可以線上部署、兼顧線下、配置靈活、適用范圍廣泛、高度自動(dòng)化,埋點(diǎn)、監(jiān)控、解析、上報(bào)、分發(fā)、跟進(jìn)、報(bào)警一站式服務(wù)的閉環(huán)監(jiān)控系統(tǒng),將絕大多數(shù)OOM問(wèn)題攔截在灰度階段,徹底解決了OOM問(wèn)題。

image.png

KOOM框架

快手KOOM核心流程包括:配置下發(fā)決策、監(jiān)控內(nèi)存狀態(tài)、采集內(nèi)存鏡像、解析鏡像文件(以下簡(jiǎn)稱hprof)生成報(bào)告并上傳、問(wèn)題聚合報(bào)警與分配跟進(jìn)。

無(wú)主動(dòng)觸發(fā)GC不卡頓

之前行業(yè)的普遍做法是通過(guò)在Activity.onDestroy()后連續(xù)觸發(fā)兩次GC,并檢查引用隊(duì)列,判定Activity是否發(fā)生了泄漏,但頻繁GC會(huì)造成用戶可感知的卡頓,快手為實(shí)現(xiàn)無(wú)感觸發(fā)設(shè)計(jì)了全新的監(jiān)控模塊,通過(guò)無(wú)性能損耗的內(nèi)存閾值監(jiān)控來(lái)觸發(fā)鏡像采集。將對(duì)象是否泄漏的判斷延遲到了解析時(shí),閾值監(jiān)控只要在子線程定期獲取關(guān)注的幾個(gè)內(nèi)存指標(biāo)即可,性能損耗忽略不計(jì)。

image.png

內(nèi)存監(jiān)控流程圖

高性能鏡像DUMP

采集內(nèi)存鏡像傳統(tǒng)方案會(huì)造成應(yīng)用完全凍結(jié)長(zhǎng)達(dá)幾秒,期間用戶完全不能操作,嚴(yán)重?fù)p害用戶體驗(yàn)??焓掷孟到y(tǒng)內(nèi)核COW(Copy-on-write,寫(xiě)時(shí)復(fù)制)機(jī)制,每次dump內(nèi)存鏡像前先暫停虛擬機(jī),然后fork子進(jìn)程來(lái)執(zhí)行dump操作,父進(jìn)程在fork成功后立刻恢復(fù)虛擬機(jī)運(yùn)行,整個(gè)過(guò)程對(duì)于父進(jìn)程來(lái)講總耗時(shí)只有幾毫秒,對(duì)用戶完全沒(méi)有影響。

暫停虛擬機(jī)需要調(diào)用虛擬機(jī)的art::Dbg::SuspendVM函數(shù),谷歌從Android 7.0開(kāi)始對(duì)調(diào)用系統(tǒng)庫(kù)做了限制,快手自研了kwai-linker組件,通過(guò)caller address替換和dl_iterate_phdr解析繞過(guò)了這一限制。

image.png

Fork dump hprof流程圖

“不偷”用戶流量的解決方案

傳統(tǒng)方案得到的hprof文件通常比較大,占用用戶大量磁盤(pán)空間,上傳大文件浪費(fèi)用戶流量,且不利于問(wèn)題聚類(lèi)分析。快手采用了新的思路:采用邊緣計(jì)算的思路,將內(nèi)存鏡像于閑時(shí)進(jìn)行獨(dú)立進(jìn)程單線程本地分析,不過(guò)多占用系統(tǒng)運(yùn)行時(shí)資源;分析完即刪除,不占用磁盤(pán)空間;分析報(bào)告大小只有KB級(jí)別,不浪費(fèi)用戶流量。

分析報(bào)告生成流程總體分為三個(gè)環(huán)節(jié),第一個(gè)環(huán)節(jié)掃描鏡像構(gòu)建索引,建立泄露查找分析的基礎(chǔ);第二個(gè)環(huán)節(jié)查找出泄露的對(duì)象,根據(jù)既有的framework知識(shí)以及人為設(shè)定的策略,執(zhí)行對(duì)象泄露判定;第三個(gè)環(huán)節(jié)生成最終報(bào)告文件,將對(duì)象泄露路徑、泄露數(shù)量、類(lèi)統(tǒng)計(jì)、運(yùn)行時(shí)信息添加至報(bào)告文件,輔助后續(xù)根據(jù)報(bào)告分析解決OOM問(wèn)題。

image.png

解析鏡像生成報(bào)告流程圖

針對(duì)鏡像回?fù)菩枨?對(duì)hprof進(jìn)行運(yùn)行時(shí)hook裁剪,只保留分析OOM必須的數(shù)據(jù)。裁剪還有數(shù)據(jù)脫敏的好處,只保留對(duì)分析問(wèn)題有用的內(nèi)存中類(lèi)與對(duì)象的組織結(jié)構(gòu),并不上傳真實(shí)的業(yè)務(wù)數(shù)據(jù),充分保護(hù)用戶隱私。

總結(jié)展望

快手KOOM計(jì)劃做完整的客戶端內(nèi)存解決方案,開(kāi)發(fā)者可以通過(guò)接入KOOM,解決自己項(xiàng)目中的OOM問(wèn)題。此次一期開(kāi)源暫時(shí)只包括Android Java OOM解決方案,后續(xù)還將開(kāi)源Android線程/文件描述符監(jiān)控、Android Native OOM監(jiān)控、iOS OOM監(jiān)控等,最終實(shí)現(xiàn)幫助開(kāi)發(fā)者解決各種場(chǎng)景下OOM的愿景。

快手KOOM GitHub地址:https://github.com/KwaiAppTeam/KOOM

原創(chuàng)文章
最新文章
1
全球16連冠:海爾究竟領(lǐng)先在哪?
2
本田攜手亞馬遜云科技打造下一代軟件定義汽車(chē),并利用生成式AI提升充電體驗(yàn)
3
引領(lǐng)聚合力 共創(chuàng)好產(chǎn)品:2024中國(guó)家電行業(yè)“好產(chǎn)品”發(fā)布盛典在北京召開(kāi)
4
CES2025:中國(guó)“智”造新年秀實(shí)力第一站,長(zhǎng)虹攜多款A(yù)I產(chǎn)品描繪生活之美
5
新年新氣象,盤(pán)點(diǎn)2025年智能電視行業(yè)發(fā)展的趨勢(shì)和方向
6
國(guó)補(bǔ)擴(kuò)圍,洗碗機(jī)、凈水器市場(chǎng)即將迎來(lái)爆發(fā)式增長(zhǎng)?
7
融合科技與藝術(shù)之美,家電如何構(gòu)建幸福生活?
8
AI改為GPT-4o,999元賣(mài)爆的中國(guó)首款A(yù)I眼鏡出海了!
9
最新手機(jī)數(shù)碼類(lèi)國(guó)補(bǔ)政策出爐,最高補(bǔ)貼五百元,想換機(jī)的朋友直接沖!
10
CES 2025:六大手機(jī)廠商缺席 一加和TCL成明星
11
日本芯片公司Rapidus將向博通提供2nm芯片樣品:與臺(tái)積電競(jìng)爭(zhēng)
12
徹底告別劉海、藥丸屏!iPhone 18 Pro系列變成單挖孔
13
2024投影行業(yè)十大事件:4K+激光勢(shì)猛,LCoS挑戰(zhàn)DLP,車(chē)載成增長(zhǎng)點(diǎn)
14
2025家電明星品類(lèi),凈水器已經(jīng)鎖定一個(gè)席位?
15
海信羅馬假日mini斬獲CES 2025創(chuàng)新獎(jiǎng),引領(lǐng)精致健康洗護(hù)潮流
16
CES觀察:科技品牌兩翼齊飛,九號(hào)公司的“智造未來(lái)”
17
極米攜全新概念產(chǎn)品XGIMI Ascend亮相CES 2025
18
CES2025:全球最大RGB-Mini LED電視亮相,海信讓液晶電視首次發(fā)出彩色光源
19
BOE(京東方)全新概念級(jí)“AI視聽(tīng)中心”亮相CES 2025 攜手高通引領(lǐng)智慧家居娛樂(lè)新圖景
20
趨勢(shì)2025 | 投資產(chǎn)出雙向奔赴,算力布局不斷優(yōu)化
關(guān)于我們

微信掃一掃,加關(guān)注

商務(wù)合作
  • QQ:61149512