Wechat-Matrix 微信 APM 框架开源项目

我要开发同款
匿名用户2018年12月25日
30阅读
开发技术C/C++
所属分类手机/移动开发、微信开发/微信公众号开发
授权协议BSD

作品详情

Matrix是一款微信研发并日常使用的APM(ApplicationPerformanceManage),当前主要运行在Android平台上。Matrix的目标是建立统一的应用性能接入框架,通过对各种性能监控方案快速集成,对性能监控项的异常数据进行采集和分析,输出相应问题的分析、定位与优化建议,从而帮助开发者开发出更高质量的应用。

Matrix当前监控范围包括:应用安装包大小,SQLite操作优化,帧率变化,卡顿,启动耗时,页面切换耗时,慢方法,文件读写性能,I/O句柄泄漏,内存泄漏等。

APKChecker

APKChecker是针对Android安装包的分析检测工具,根据一系列设定好的规则检测APK是否存在特定的问题,并输出较为详细的检测结果报告,用于分析排查问题以及版本追踪。当前,APKChecker主要包含以下功能:

读取manifest的信息

按文件大小排序列出APK中的所有文件

统计方法数

统计class数目

检查是否经过资源混淆(AndResguard)

搜索不含alpha通道的png文件

搜索未经压缩的文件类型

检查是否包含多ABI版本的动态库

统计APK中包含的R类以及R类中的fieldcount

搜索冗余的文件

检查是否有多个动态库静态链接了STL

搜索APK中包含的无用资源

搜索APK中包含的无用assets文件

搜索APK中未经裁剪的动态库

SQLiteLint

SQLiteLint是一个SQLite使用质量的自动化检测工具,犹如一个SQLite优化高手在开发或者测试过程中不厌其烦地、仔细地review你的SQL语句,是团队高质量SQLite实践中的一个有用工具。SQLiteLint当前支持的检测能力包括:

检测索引使用问题

检测冗余索引问题

检测select*问题

检测Autoincrement问题

检测建议使用preparedstatement

检测建议使用withoutrowid特性

TraceCanary

TraceCanary通过choreographer回调、编译期插桩的方式,实现了高准确率、高性能的卡顿检测、定位方案,并扩展支持了多个其它流畅性指标,包括:

界面流畅性评估

卡顿定位

ANR监控

应用启动及界面切换耗时监控

ResourceCanary

ResourceCanary是基于WeakReference的特性和Haha库开发的Activity泄漏和Bitmap重复创建检测工具。其中检测采集部分部署在客户端,分析部分部署在服务端,通过分离检测和分析两部分逻辑使该工具的流程对持续集成更友好。当前ResourceCanary主要包含以下功能:

检测疑似泄漏的Activity,输出其类名和引用链

检测内存中图像数据完全一样的重复Bitmap对象,输出其类名和引用链

IOCanary

IOCanary是一个在开发、测试或者灰度阶段辅助发现IO问题的工具,目前主要包括文件IO监控和CloseableLeak监控两部分,提供了IO的大盘监控,从而做到心中有数。具体功能包括:

检测主线程IO使用不当

检测读写Buffer过小

检测重复读操作

检测CloseableLeak操作,包括文件读写、cursor未及时关闭等

Matrix有哪些优势?

与常规的APM工具相比,Matrix拥有以下特点:

APKChecker

具有更好的可用性:JAR包方式提供,更方便应用到持续集成系统中,从而追踪和对比每个APK版本之间的变化

更多的检查分析功能:除具备APKAnalyzer的功能外,还支持统计APK中包含的R类、检查是否有多个动态库静态链接了STL、搜索APK中包含的无用资源,以及支持自定义检查规则等

输出的检查结果更加详实:支持可视化的HTML,便于分析处理的JSON,自定义输出等等

SQLiteLint

接入简单,代码无侵入

数据量无关,开发、测试阶段即可发现SQLite性能隐患

检测算法基于最佳实践,高标准把控SQLite质量

底层是C++实现,支持多平台扩展

ResourceCanary分离了检测和分析部分,便于在不打断自动化测试的前提下持续输出分析后的检测结果

对检测部分生成的Hprof文件进行了裁剪,移除了大部分无用数据,降低了传输Hprof文件的开销

增加了重复Bitmap对象检测,方便通过减少冗余Bitmap数量,降低内存消耗

TraceCanary

编译期动态修改字节码,高性能记录执行耗时与调用堆栈

准确的定位到发生卡顿的函数,提供执行堆栈、执行耗时、执行次数等信息,帮助快速解决卡顿问题

自动涵盖卡顿、启动耗时、页面切换、慢函数检测等多个流畅性指标

IOCanary

接入简单,代码无侵入

性能、泄漏全面监控,对IO质量心中有数

兼容到AndroidP

未来规划

内外同源,持续完善功能,增加新的监控项,如电量,线程资源,内存监控等等

平台扩展,提供iOS等多语言SDK

打造一套完整的云解决方案

查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论