軟件推薦丨微信 APM 框架——Wechat-Matrix

軟件推薦丨微信 APM 框架——Wechat-Matrix

點擊右上方,關注開源中國OSC頭條號,獲取最新技術資訊

Matrix 是一款微信研發並日常使用的 APM (Application Performance Manage) ,當前主要運行在 Android 平臺上。Matrix 的目標是建立統一的應用性能接入框架,通過對各種性能監控方案快速集成,對性能監控項的異常數據進行採集和分析,輸出相應問題的分析、定位與優化建議,從而幫助開發者開發出更高質量的應用。

Matrix 當前監控範圍包括:應用安裝包大小,SQLite 操作優化,幀率變化,卡頓,啟動耗時,頁面切換耗時,慢方法,文件讀寫性能,I/O 句柄洩漏, 內存洩漏等。

APK Checker

APK Checker 是針對 Android 安裝包的分析檢測工具,根據一系列設定好的規則檢測 APK 是否存在特定的問題,並輸出較為詳細的檢測結果報告,用於分析排查問題以及版本追蹤。當前,APK Checker 主要包含以下功能:

  • 讀取 manifest 的信息
  • 按文件大小排序列出 APK 中的所有文件
  • 統計方法數
  • 統計 class 數目
  • 檢查是否經過資源混淆(AndResguard)
  • 搜索不含 alpha 通道的 png 文件
  • 搜索未經壓縮的文件類型
  • 檢查是否包含多 ABI 版本的動態庫
  • 統計 APK 中包含的 R 類以及 R 類中的 field count
  • 搜索冗餘的文件
  • 檢查是否有多個動態庫靜態鏈接了 STL
  • 搜索 APK 中包含的無用資源
  • 搜索 APK 中包含的無用 assets 文件
  • 搜索 APK 中未經裁剪的動態庫

SQLite Lint

SQLite Lint是一個 SQLite 使用質量的自動化檢測工具,猶如一個 SQLite 優化高手在開發或者測試過程中不厭其煩地、仔細地 review 你的 SQL 語句,是團隊高質量 SQLite 實踐中的一個有用工具。SQLite Lint 當前支持的檢測能力包括:

  • 檢測索引使用問題
  • 檢測冗餘索引問題
  • 檢測 select * 問題
  • 檢測 Autoincrement 問題
  • 檢測建議使用 prepared statement
  • 檢測建議使用 without rowid 特性

Trace Canary

Trace Canary 通過 choreographer 回調、編譯期插樁的方式,實現了高準確率、高性能的卡頓檢測、定位方案,並擴展支持了多個其它流暢性指標,包括:

  • 界面流暢性評估
  • 卡頓定位
  • ANR監控
  • 應用啟動及界面切換耗時監控

Resource Canary

Resource Canary 是基於 Weak Reference 的特性和 Haha 庫開發的 Activity 洩漏和 Bitmap 重複創建檢測工具。其中檢測採集部分部署在客戶端,分析部分部署在服務端,通過分離檢測和分析兩部分邏輯使該工具的流程對持續集成更友好。當前 Resource Canary 主要包含以下功能:

  • 檢測疑似洩漏的 Activity ,輸出其類名和引用鏈
  • 檢測內存中圖像數據完全一樣的重複 Bitmap 對象,輸出其類名和引用鏈

IO Canary

IO Canary 是一個在開發、測試或者灰度階段輔助發現 IO 問題的工具,目前主要包括文件 IO 監控和 Closeable Leak 監控兩部分,提供了 IO 的大盤監控,從而做到心中有數。具體功能包括:

  • 檢測主線程 IO 使用不當
  • 檢測讀寫 Buffer 過小
  • 檢測重複讀操作
  • 檢測 Closeable Leak 操作,包括文件讀寫、cursor 未及時關閉等

Matrix 有哪些優勢?

與常規的 APM 工具相比,Matrix 擁有以下特點:

APK Checker

  • 具有更好的可用性:JAR 包方式提供,更方便應用到持續集成系統中,從而追蹤和對比每個 APK 版本之間的變化
  • 更多的檢查分析功能:除具備 APKAnalyzer 的功能外,還支持統計 APK 中包含的 R 類、檢查是否有多個動態庫靜態鏈接了 STL 、搜索 APK 中包含的無用資源,以及支持自定義檢查規則等
  • 輸出的檢查結果更加詳實:支持可視化的 HTML ,便於分析處理的 JSON ,自定義輸出等等

SQLite Lint

  • 接入簡單,代碼無侵入
  • 數據量無關,開發、測試階段即可發現SQLite性能隱患
  • 檢測算法基於最佳實踐,高標準把控SQLite質量
  • 底層是 C++ 實現,支持多平臺擴展

Resource Canary

  • 分離了檢測和分析部分,便於在不打斷自動化測試的前提下持續輸出分析後的檢測結果
  • 對檢測部分生成的 Hprof 文件進行了裁剪,移除了大部分無用數據,降低了傳輸 Hprof 文件的開銷
  • 增加了重複 Bitmap 對象檢測,方便通過減少冗餘 Bitmap 數量,降低內存消耗

Trace Canary

  • 編譯期動態修改字節碼, 高性能記錄執行耗時與調用堆棧
  • 準確的定位到發生卡頓的函數,提供執行堆棧、執行耗時、執行次數等信息,幫助快速解決卡頓問題
  • 自動涵蓋卡頓、啟動耗時、頁面切換、慢函數檢測等多個流暢性指標

IO Canary

  • 接入簡單,代碼無侵入
  • 性能、洩漏全面監控,對 IO 質量心中有數
  • 兼容到 Android P

未來規劃

  • 內外同源,持續完善功能,增加新的監控項,如電量,線程資源,內存監控等等
  • 平臺擴展,提供 iOS 等多語言 SDK
  • 打造一套完整的雲解決方案

↓↓↓


分享到:


相關文章: