Wechat-Matrix

微信 APM 框架
授权协议 BSD
开发语言 C/C++
所属分类 手机/移动开发、 微信开发/微信公众号开发
软件类型 开源软件
地区 国产
投 递 者 劳通
操作系统 跨平台
开源组织 腾讯
适用人群 未知
 软件概览

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

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

  • 2019/7/19 看了资源监测机制 ResourceCanary ResourceCanary的功能有两个: Activity泄露监测 Bitmap冗余监测 基本原理是: Activity泄露监测: 使用若引用包着avtivity实例 当activity onDestroy时,隔多时间主动执行以下GC,若activity没被回收,则认为是泄露 记录下泄露的activity并生成hprof文件 裁

  • 1.gradle文件配置 apply plugin: 'com.tencent.matrix-plugin' matrix { logLevel "D" trace { enable = true baseMethodMapFile = "${project.projectDir}/matrixTrace/methodMapping.txt"

  • ViewPager容器内有五个View,如何实现呢? 其实大体可以想象为: 钱包(ViewPager)里面,添加五张不同的钞票(Layout1.2.3.4.5); 1.首先看页面的布局文件whatsnew_viewpager.xml <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.

  • AR Augmented reality, also known as Mixed reality. It uses computer technology to apply virtual information to the real world. World, the real environment and virtual objects are superimposed on the s

  • 首先是要配置好相关参数,以及一些工具类 public class weChatPayConfig { public static final String DOMAIN = ""; public static final String APP_ID = ""; public static final String APP_SECRET = ""; public stat

  • JAVA中获取当前系统时间 - Matrix54 - 博客园 一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowString { public static void main(String[] args) { SimpleDateFormat df = n

 相关资料
  • 5.2.1 什么是 Elastic APM? Elastic APM 是 Elastic 公司开源的一款 APM 工具,目前还处于 Beta 阶段,它有以下几个优势: 开源。我们可以免费使用,像使用 ELK 一样。 功能完善。API 比较完善,有 Agent、Transaction 和 Trace,默认创建响应时间和每分钟请求数两种图表,且可以使用 Kibana 的 Filter 过滤生成关心的数

  • 本文向大家介绍Android微信图片浏览框架设计,包括了Android微信图片浏览框架设计的使用技巧和注意事项,需要的朋友参考一下 一、业务场景 1、聊天界面发送图片==>多选点选+有右上角”发送”+图片预览==>图片预览支持右上角”发送”逻辑 2、发表动态==>多选点选+右上角”完成” + 图片预览==>图片预览支持右上角”完成”逻辑 3、个人资料更改头像==>单选点选 + 图片预览截图==>图

  • 本文向大家介绍利用django+wechat-python-sdk 创建微信服务器接入的方法,包括了利用django+wechat-python-sdk 创建微信服务器接入的方法的使用技巧和注意事项,需要的朋友参考一下 1、版本说明 :python 2.7.10, Django (1.6.11.6),centos7 2、步骤说明: A、django 建立项目 之后启动服务器,看看是否正确: 配置

  • 链接 NewRelic Elastic APM

  • ArduPilot/APM是一款开源自动导航系统,支持多旋翼飞行器,传统直升机,固定翼飞机与传统直升机。源码由一个大型爱好者社区开发。 支持的导航板 目前,ArduPilot/APM支持如下自动导航板 PX4 – 一款32位基于ARM的自动导航仪,支持很多高级特性,使用NuttX实时操作系统 APM2 – 一款受欢迎的AVR2560 8位自动导航仪 APM1(已终止开发) – 一款基于AVR256

  • 类似arthas的工具。支持telnet链接、websocket,并提供了默认的websocket的前端页面。 javaagent运行时attach到目标进程,通过netty启动一个rpc接口,接收命令,如果是监控方法耗时、参数、返回值的watch命令, 则创建一个ClassFileTransformer, 通过ASM修改对应的类,在方法前后注入代码,调用Instrumentation.retra