12 月 16 日,在 360 移動(dòng)性能開放日上,360 手機(jī)衛(wèi)士技術(shù)架構(gòu)負(fù)責(zé)人卜云濤向我們介紹了 360 最新開源的性能監(jiān)控平臺(tái) ArgusAPM。ArgusAPM 是 360 手機(jī)衛(wèi)士客戶端團(tuán)隊(duì)繼 RePlugin 之后開源的又一個(gè)重量級(jí)開源項(xiàng)目。ArgusAPM 是 360 移動(dòng)端產(chǎn)品使用的可視化性能監(jiān)控平臺(tái),為移動(dòng)端 APP 提供性能監(jiān)控與管理,可以迅速發(fā)現(xiàn)和定位各類 APP 性能和使用問(wèn)題,幫助 APP 不斷的提升用戶體驗(yàn)。
GitHub 地址:https://github.com/Qihoo360/ArgusAPM
產(chǎn)品價(jià)值
- 實(shí)時(shí)掌控應(yīng)用性能
- 降低性能定位成本
- 有效提升用戶體驗(yàn)
監(jiān)控模塊
ArgusAPM 目前支持如下性能指標(biāo):
- 交互分析:分析 Activity 生命周期耗時(shí),幫助提升頁(yè)面打開速度,優(yōu)化用戶 UI 體驗(yàn);
- 網(wǎng)絡(luò)請(qǐng)求分析:監(jiān)控流量使用情況,發(fā)現(xiàn)并定位各種網(wǎng)絡(luò)問(wèn)題;
- 內(nèi)存分析:全面監(jiān)控內(nèi)存使用情況,降低內(nèi)存占用;
- 進(jìn)程監(jiān)控:針對(duì)多進(jìn)程應(yīng)用,統(tǒng)計(jì)進(jìn)程啟動(dòng)情況,發(fā)現(xiàn)啟動(dòng)異常(耗電、存活率等);
- 文件監(jiān)控:監(jiān)控 APP 私有文件大小 / 變化,避免私有文件過(guò)大導(dǎo)致的卡頓、存儲(chǔ)空間占用等問(wèn)題;
- 卡頓分析:監(jiān)控并發(fā)現(xiàn)卡頓原因,代碼堆棧精準(zhǔn)定位問(wèn)題,解決明顯的卡頓體驗(yàn);
- ANR 分析:捕獲 ANR 異常,解決 APP 的“未響應(yīng)”問(wèn)題。
ArgusAPM 特性
- 非侵入式
無(wú)需修改原有工程結(jié)構(gòu),無(wú)侵入接入,接入成本低。
- 無(wú)性能損耗
ArgusAPM 針對(duì)各個(gè)性能采集模塊,優(yōu)化了采集時(shí)機(jī),在不影響原有性能的基礎(chǔ)上進(jìn)行性能的采集和分析。
- 監(jiān)控全面
目前支持 UI 性能、網(wǎng)絡(luò)性能、內(nèi)存、進(jìn)程、文件、卡頓、ANR 等各個(gè)維度的性能數(shù)據(jù)分析,后續(xù)還會(huì)繼續(xù)增加新的性能維度。
- Debug 模式
獨(dú)有的 Debug 模式,支持開發(fā)和測(cè)試階段、實(shí)時(shí)采集性能數(shù)據(jù),實(shí)時(shí)本地分析的能力,幫助開發(fā)和測(cè)試人員在上線前解決性能問(wèn)題。
- 支持插件化方案
在初始化階段進(jìn)行設(shè)置,可支持插件接入,目前 360 手機(jī)衛(wèi)士采用的就是在 RePlugin 插件中接入 ArgusAPM,并且性能方面無(wú)影響。
- 支持多進(jìn)程采集
針對(duì)多進(jìn)程的情況,我們做了相應(yīng)的數(shù)據(jù)采集及優(yōu)化方案,使 ArgusAPM 即適合單進(jìn)程 APP 也適合多進(jìn)程 APP。
- 節(jié)省用戶流量
ArgusAPM 使用 wifi 狀態(tài)下上傳性能數(shù)據(jù),這樣避免了頻繁網(wǎng)絡(luò)請(qǐng)求帶來(lái)的耗電問(wèn)題及用戶流量的消耗。
ArgusAPM 項(xiàng)目結(jié)構(gòu)圖
整體架構(gòu)分為兩部分:一是左邊藍(lán)色的部分:性能采集模塊,一是右邊的綠色部分:Gradle Plugin 模塊。
下面分別針對(duì)這兩部分做簡(jiǎn)單的介紹:
1. 性能采集模塊
該模塊總共分為五個(gè) Module,并最終生成三個(gè) aar 文件,即:
argus-apm-main.aar:APM 項(xiàng)目的核心業(yè)務(wù)模塊
argus-apm-aop.aar:AOP 代碼的織入模塊
argus-apm-okhttp.aar:采集 OKHTTP 網(wǎng)絡(luò)性能
其中之所以拆分那么多的模塊,是為了能夠讓我們可插拔式的去使用里面的功能,例如,如果我項(xiàng)目中沒有使用 OKHTTP 相關(guān)的功能,那么我們就可以關(guān)閉相應(yīng)的依賴。
2.Gradle Plugin 模塊
該模塊主要具備兩個(gè)作用:
支持 AOP 編程,方便 ArgusAPM 能夠在編譯期織入一些性能采集的代碼;
通過(guò) Gradle 插件來(lái)管理依賴庫(kù),使用戶接入 ArgusAPM 更簡(jiǎn)單。
最終,我們?cè)诮尤?ArgusAPM 的時(shí)候,只需要簡(jiǎn)單的應(yīng)用插件即可,而不需要再單獨(dú)的去依賴各個(gè) aar 文件。
如何使用
如果您想快速的接入 ArgusAPM,請(qǐng)參考《三分鐘快速接入 ArgusAPM》,依照文章指引,快速接入;
如果您想了解更多的 ArgusAPM 的使用技巧,請(qǐng)參考《詳細(xì)接入教程》;
如果您想?yún)⒉榭垂俜降?Sample,進(jìn)而了解具體的用法,請(qǐng)查看《Sample》;
如果您在接入 ArgusAPM 的過(guò)程中遇到問(wèn)題,請(qǐng)閱讀《FAQ》。
具體詳情參見:
https://github.com/Qihoo360/ArgusAPM/wiki
使用現(xiàn)狀
未來(lái)規(guī)劃
支持更多的性能指標(biāo)
完善 DC 平臺(tái)分析維度
提升用戶體驗(yàn)
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。