成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

快手自研OOM解決方案KOOM今日宣布開源

開發
OOM是當前Android開發中的常見疑難問題,尤其是線上發生的OOM問題極難定位。業界當前最知名的方案LeakCanary,通過監控Activity/Fragment泄漏優化Java OOM問題,多年來一直為廣大app保駕護航,解決了OOM治理從0到1的問題。

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

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

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

KOOM框架

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

無主動觸發GC不卡頓

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

內存監控流程圖

高性能鏡像DUMP

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

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

Fork dump hprof流程圖

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

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

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

解析鏡像生成報告流程圖

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

總結展望

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

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

責任編輯:王雪燕 來源: 51CTO
相關推薦

2018-06-07 16:00:28

阿里巴巴語音識別開源

2024-12-09 08:27:02

2019-03-26 19:30:47

開源備份解決方案

2018-04-17 14:54:26

微軟物聯網網絡安全

2012-09-06 17:44:06

Aura Confer解決方案Avaya

2022-06-16 12:13:14

騰訊TKE自研

2011-02-24 13:35:06

Apache OFBi開源ERP

2019-03-12 10:30:29

開源備份Borg Backup

2009-10-15 15:38:21

HASP SRM解決方SaaSSafeNet

2016-01-14 15:27:50

VMware

2009-04-16 11:10:59

LinuxIDF開源軟件

2020-02-05 11:20:39

微軟瀏覽器Windows

2011-05-11 14:05:36

博科網絡

2013-06-26 10:02:42

Citrix XenServer虛擬化解決方案

2022-12-27 17:57:03

開源汽車充電

2014-09-25 21:44:19

戴爾

2009-05-21 14:02:23

SAPRIM移動OS

2018-12-03 12:17:27

Semptian解決方案

2012-05-27 16:21:31

IDC華為
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品99在线| 亚洲国产成人av好男人在线观看 | 永久www成人看片 | 欧洲尺码日本国产精品 | 国产精品呻吟久久av凹凸 | 久久av一区二区三区 | 精品在线一区二区 | 国产精品美女久久久久久免费 | 欧美国产一区二区三区 | 国产精品久久久亚洲 | 午夜精品久久久久久久星辰影院 | 九九久久精品视频 | 欧美极品在线视频 | 日韩一级电影免费观看 | 成人免费视频一区 | 免费看国产一级特黄aaaa大片 | cao视频| 久久首页 | 嫩草黄色影院 | 国产一区久久 | www.伊人.com | 免费三级黄 | 一区在线观看视频 | va在线| av日韩在线播放 | 视频在线观看亚洲 | 暴草美女 | 亚洲 欧美 日韩在线 | 日韩欧美在线一区 | 精品av天堂毛片久久久借种 | 欧美成人自拍视频 | a在线免费观看视频 | 亚洲一在线 | 久草电影网 | 亚洲图片一区二区三区 | 羞羞视频在线观免费观看 | 久久久久久综合 | 波多野结衣电影一区 | 亚洲三级视频 | 日韩中文字幕在线免费 | 男人的天堂在线视频 |