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

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

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

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

image.png

KOOM框架

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

無主動觸發(fā)GC不卡頓

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

image.png

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

高性能鏡像DUMP

采集內存鏡像傳統(tǒng)方案會造成應用完全凍結長達幾秒,期間用戶完全不能操作,嚴重損害用戶體驗??焓掷孟到y(tǒng)內核COW(Copy-on-write,寫時復制)機制,每次dump內存鏡像前先暫停虛擬機,然后fork子進程來執(zhí)行dump操作,父進程在fork成功后立刻恢復虛擬機運行,整個過程對于父進程來講總耗時只有幾毫秒,對用戶完全沒有影響。

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

image.png

Fork dump hprof流程圖

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

傳統(tǒng)方案得到的hprof文件通常比較大,占用用戶大量磁盤空間,上傳大文件浪費用戶流量,且不利于問題聚類分析??焓植捎昧诵碌乃悸?采用邊緣計算的思路,將內存鏡像于閑時進行獨立進程單線程本地分析,不過多占用系統(tǒng)運行時資源;分析完即刪除,不占用磁盤空間;分析報告大小只有KB級別,不浪費用戶流量。

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

image.png

解析鏡像生成報告流程圖

針對鏡像回撈需求,對hprof進行運行時hook裁剪,只保留分析OOM必須的數(shù)據(jù)。裁剪還有數(shù)據(jù)脫敏的好處,只保留對分析問題有用的內存中類與對象的組織結構,并不上傳真實的業(yè)務數(shù)據(jù),充分保護用戶隱私。

總結展望

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

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

最新文章
1
《2025智慧生活科技好物以舊換新選購指南》正式發(fā)布
2
解鎖2025CIC中國智慧生活大會五大亮點,暢享未來生活新范式
3
助力文化傳承 快手推出國內首檔二次元IP非遺跨界綜藝《IP中國行》
4
快手電商618“星成長主播”案例合集:好方法 好內容 引爆增長
5
北京網(wǎng)絡視聽藝術大會主題打卡活動超3000萬人次觀看,全面賦能城市副中心文旅發(fā)展
6
錨定行業(yè)發(fā)展方向,2025中國家電健康趨勢高峰論壇在京舉辦
7
海信視像榮獲“中國卓越管理公司”大獎,以長期主義詮釋中國企業(yè)成長范式
8
空調線上市場半年觀察:價格戰(zhàn)兇猛 美的格力小米居銷量前三
9
三星Galaxy Z Flip7正式發(fā)布:AI賦能輕巧機身 智能外屏煥新升級
10
三星Galaxy Z Fold7正式發(fā)布:樹立Galaxy智能手機新標桿
11
央視探訪海信空調實驗室,揭秘賽場外的黑科技
12
1-2nm 水分子革命:華帝如何用技術重構沐浴邏輯
13
2025年“灣區(qū)杯”網(wǎng)絡安全大賽啟航 面向全國開放報名 ——守護智慧安全未來城市
14
華潤入主康佳,半導體和消費電子起飛在即?
15
快手集中整治“虛假回收”類違規(guī)行為,保護用戶權益免遭損失
16
快手直播大舞臺遍地開花,打造現(xiàn)象級文旅新爆款
17
科技副總裁宋婷婷:數(shù)字技術賦能女性發(fā)展,繁榮生態(tài)綻放“她力量”
18
第三屆北京網(wǎng)絡視聽藝術大會成功舉辦,“新大眾文藝”主題研討引熱議
19
美的格力海爾都布局的廚房空調,雞肋還是剛需?
20
電商行業(yè)破局重構,"618"大促展現(xiàn)六大新趨勢
關于我們

微信掃一掃,加關注

商務合作
  • QQ:61149512