Android流量监控方法研究

导语:在Android性能测试中,我们经常要对某个android应用进行流量监控测试,从而得出这个应用流量消耗情况。同时,我们也会时常收到用户抱怨,说手机管家流量监控不准 确,甚至有些手机的浮动窗口数值不会变化一直保持为0,但是当我们向开发人员反馈时他们会抱怨说是机型导致这个问题。那么android系统中的流量究竟是如何统计的呢?是不是真和机型相关?下面就让我们来看看android系统的流量统计数据是如何获取的。

1、常用的测试流量方法:

(1)使用wireshark进行抓包:

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。目前,wireshark主要测试活动有K吧里面提到的手机QQ性能测试和管家流量监控准确性测试。虽然wireshark可以准确统计流量数据,但是如果数据量比较大时就难准确分析,同时据我所知wireshark无法通过命令行来获取某些数据包的流量统计(如果哪位同仁知道怎么处理希望能告诉我J)

(2)通过已有的工具,比如手机管家、360手机卫士或其他统计工具

使用现场工具是最为简便的方法,但并不是每个工具都可以做到100%的准确,比如手机管家是在有浮动窗口情况下3秒刷新一次,通知栏的流量统计是30秒刷新一次。

2、流量数据获取原理:

(1)读取linux本地文件

Android是基于linux的一个操作系统。在Android中,如果用Root Explorer去查看系统文件,与流量监控相关的会有这么几个文件:

① 系统总流量:/proc/net/dev,这个文件中记录的是整个系统的流量情况。

② 单个进程流量:/proc/uid_stat/%d" 和"/proc/uid_stat/%d" %d为进程的UID。这个文件里只有两项数据tcp_rcv和tcp_snd。从命名我们就能看出:tcp_rcv代表总的接收字节数,tcp_snd代表总的发送字节数。

但是,上面的两个流量统计数据都是开机之后累计的数据,也就是说重启手机之后相应的流量数据会自动清零。

对于系统总流量数据,有如下输出格式如图1所示:

图1 Android系统总流量数据

但上图是在WIFI开启的情况下,只有GPRS开启时显示如下图2所示:

图2 在GPRS开启时Android系统中总流量数据

相信大家看了上面的日志会得出eth0是WIFI网络使用的接口,而rmnet0是GPRS使用的接口。但这就是问题所在了,不是所有机器都是用eth0来表示WIFI接口,同样也不是所有rmnet0来表示GPRS, 这些字段的表示都与ROM相关,甚至有些ROM连/proc/net/dev这个文件都没有!如果我们使用的流量监控工具或者程序只适配了这种情况,那么在别的机器上就有可能获取不到流量数据了,从而就有可能导致用户反馈的手机流量数据一直为0的这种情况。

既然不同的ROM可能有不同的字段,那么有没有比较好的办法来做适配呢?据我了解暂时没有,目前比较好的办法是将能收集到的流量字段做成配置文件,然后在读取时去一一匹配,比如配置文件的格式可以如下:

(2)利用系统现有函数

在Android 2.1及以下版本是没有专门的流量统计系统函数,随后在2.2版及后续版本都加入了TrafficStats类,这样就可以轻松获取系统总流量或者单个进程的流量数据。其实,TrafficStats类本身也是读取Linux提供的文件对象系统类型的文本进行解析,其中有的方法也是读取别的文件。TrafficStats类中,提供了多种静态方法,比如getMobileRxByte()可以直接调用获取通过Mobile连接收到的字节总数,getUidRxBytes()返回的是某个进程流量数据,这两个函数返回值均为long型,如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计。

但是需要注意的是,在没有wifi的情况下,各进程获得的getUidRxBytes之和与getMobileRxBytes所返回的值不相等,原因在于getUidRxBytes是读取上文提到的文件,而getMobileRxBytes读取的是sys/class/net/rmnet0/statistics/rx_bytes 和sys/class/net/ppp0/statistics/rx_bytes 这两文件。而且在getUidRxBytes返回的值中包含了本地通信的流量,比如本地进程间的socket通信。所以这两个值加起来有所出入,这也是我们在测试流量统计时偶尔也会遇到的问题,那就是在飞行模式下应用程序也会提示有几十B的2G/3G流量消耗。经过测试,这本地通信的流量值很小,只有几KB甚至几十B.

本文分享自微信公众号 - 腾讯移动品质中心TMQ(gh_2052d3e8c27d),作者:stephen

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 腾讯TMQ在线沙龙|移动互联网APP的流量测试和优化经验

    移动APP的流量测试和优化经验 活动时间:2016年12月8日 QQ群视频交流 活动介绍:TMQ在线沙龙第十四期分享 本次分享的主题是移动互联网APP的流量测试...

    腾讯移动品质中心TMQ
  • 常用流量测试方法及一些思考

    App性能测试中流量测试是其中重要的一项,网络场景(wifi、非wifi)、用户使用场景(页面加载流量、场景使用流量、待机流量),这些都是需要考虑的测试点。

    腾讯移动品质中心TMQ
  • 流量都去哪儿了 —— 三板斧搞定Android网络流量测试

    流量是什么? 为什么要进行流量测试? 流量测试方法有哪些? 怎么统计流量并进行结果分析? 带着这些疑问,小编带您探寻Android网络流量的测试方法。 1 ...

    腾讯移动品质中心TMQ
  • 什么是纯流量卡,物联卡好用吗?怎么闭坑?

    流量卡就是物联网卡,俗称:流量卡、物联卡、只有上网功能,没有语音和短信功能的卡90%都是物联卡。什么大圣卡,金象卡,红桃卡,黑桃卡,小象卡,龙神卡,普天卡,这些...

    用户7152677
  • 被逼上“梁山”,运营商该如何转向流量经营?

    2015年对于运营商而言,是兵荒马乱的一年。OTT业务的影响愈发明显、4G时代到来三大运营商竞争趋激、虚拟运营商已成气候、政府反腐行动的波及、骚扰电话整治直接影...

    罗超频道
  • 你方唱罢我登场:春节红包大战的流量新逻辑

    2018年,我们在春节期间还在忙着各式各样的答题通关冲顶;2019年,我们在春节期间则已经开始了各大平台各式各样的抢红包大战。尽管模式和套路并不相同,但是答题冲...

    孟永辉
  • 干货分享 | 互联网教育三种流量获取玩法解析

    ? 想要了解—— 如何线上线下精准引流与口碑营销? 如何将多渠道流量更有效的承接与转化? 如何分类留存新老学员降低流失率? 扫描下方二维码 马上观看 教育行业...

    腾讯企点
  • 纯流量卡,物联卡,到底是什么?如何避坑?

    首先流量卡就是物联网卡,俗称:流量卡、物联卡、网上只要能上网,不能打电话的卡,百分之99.9都是物联卡。什么乞丐卡,天神卡,红桃卡,黑桃卡,小象卡,...

    用户7152677
  • 【实战101】手把手教你寻找并排除虚假异常流量!

    引言:本文结合了作者丰富的互联网数据分析实战经验,深度剖析了如何运用GA来发现,分析并排除虚假和异常流量。

    iCDO互联网数据官
  • 腾讯TMQ在线沙龙|移动互联网APP的流量测试和优化经验

    移动APP的流量测试和优化经验 活动时间:2016年12月8日 QQ群视频交流 活动介绍:TMQ在线沙龙第十四期分享 本次分享的主题是移动互联网APP的流量测试...

    腾讯移动品质中心TMQ

扫码关注云+社区

领取腾讯云代金券