监控数据及工具描述
Posted linxiu-0925
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监控数据及工具描述相关的知识,希望对你有一定的参考价值。
监控工具有:
网易的 Emmagee,腾讯的 GT,阿里的 EasyTest,讯飞的 iTest。
Emmagee 相对而言比较简单,主要用于监控单个 App 的 CPU、内存、流量,且仅适用于 App 的单进程,同时监控整机的 CPU、剩余内存、电量、电流、温度、电压。因为 Emmagee 的功能比较简单,所以实现也简单些。
GT 侧重于随身调试,功能比较多,主要的监控数据包括单个 App 各进程的CPU、PSS 内存、Private Dirty 内存、jiffies,单个 App 整体的流量,此外,还可以监控到整机的 CPU、内存、信号强度、FPS、电量。
GT 之所以称之为随身调,因为他除了监控功能之外,还包括查看日志、抓包、自定义输入参数的监控等其他调试辅助功能。
EasyTest 定位于无线研发场景的客户端测试工具,包括的基础监控功能,监控数据包括单个 App 的 CPU、内存、流量、电量,EasyTest 的辅助测试能力是其主要功能,也是一大特色,比如:一键启动 monkey、弱网模拟等。
EasyTest 除客户端外,还支持将监控数据实时上传到云端,可同步在 web 平台查看数据趋势。
iTest 是讯飞出品的除 Emmagee 之外的国内另一款定位于监控的工具。iTest 可以监控多个 App 或 linux 进程的 CPU、PSS、流量、电量,针对多进程的 App 也同样适用,同时监控整机的 CPU 占用、剩余内存、CPU 温度、FPS。
此外,提供了 CPU、内存、弱网等辅助测试场景的模拟。值得一提的是,iTest 也提供了数据持久化,能够在 web 端查看数据走势图,且提供了版本间数据的对比。
相关数据的获取无外乎几个来源,一种是 android 从 linux 继承来的特性,与进程相关的信息会保存在文件中,监控工具做的事情就是去读取解析文件;
一种是 Android 提供的 API,监控工具直接调 API 再进行相应的处理既可;
还有一种是从 Android 命令中获取需要的数据,监控工具先采用 Runtime 调用命令获取命令返回值进而解析处理得到需要的数据。
性能分析初探:
内存占用过大时应该查看是否有内存泄露、是否有对象使用了不合理的数据结构:
(1)内存泄露可以借助 MAT、Leakcanary 等工具来分析定位;
(2)不合理的数据结构需要针对内存占用排名靠前的类型进行分析,需要研究 Java 不同集合类的使用场景和实现原理的区别;
启动时间太慢,需要查看是不是做了过多的无关紧要的事情、创建了太多的网络请求和线程,是不是加载页面图片的时机不正确,有没有使用延时加载的策略。
响应时间慢,可以考虑使用的 http 请求封装库、数据解析库效率是否够高,是否有效率更高的选择,是否采用了数据缓存策略,请求数据是否有压缩,也可以通过 Systrace 和 Traceview 来排查问题究竟出在哪个函数的哪段代码。
流量消耗太大,需要查看网络请求数据是否采用 Gzip 压缩,图片格式是否采用 webP 方案,网络请求是否存在重复冗余请求的情况,是否可以增加网络缓存的机制,请求数据是否都有效。针对流量消耗问题排查,可以借助抓包工具抓包,分析相关的通信报文来定位问题。
以上是关于监控数据及工具描述的主要内容,如果未能解决你的问题,请参考以下文章