1、流量测试方法
-
抓包测试法,通过第三方应用,来禁用其他APP的连网权限,并使用工具进行抓包
Android 上常用的工具是tcpdump,并使用wireshark进行统计 -
统计测试法
安卓系统自身提供了TCP收发长度的统计功能,一般App和后台服务器之间的通信都是基于TCP的,所 以我们可以利用此统计来测试我们App的流量,而且安卓提供的该统计功能是按照App纬度来统计,
步骤:1、ps命令找出所测APP的uid,2、进入/proc/uid_stat/“uid” 目录,cat获取当前tcp_snd和tcp_rcv的初始值,3、进行一段时间测试后,再次获取其值 -
其他性能测试工具-----GT,Emmagee
优化方案
- 必须小分片传输一个文件\图片
理由:a)若整个文件(图片)放在一个网络包里进行传输,一旦失败,就必须重传整个文件,这样给用户带来的流量浪费是巨大的。因而采用把一个文件分片的方式传输,则只需要在某一个分片失败后重传这一个分片; b) 单个消息越大传输时越容易失败 - 不同类型的移动互联网下的分片初始大小应该有所不同。----------理由:不同互联网的带宽和稳定性的差异都很大,使用不通大小的初始分片应该能更好的适应对应类型的网络
- 在上传一个文件\图片的过程中,应尽可能的动态增大分片大小,以减少分片动作。----------理由:分片动作会带来不少额外开销,如C/S两端拆分与合并分片的时间、传输时的额外流量(HTTP头等)、每个分片的RTT等等,所以理论上传输同一个文件用的分片数量越少,应该额外开销越小。
- 确定每个分片是否要继续增大之前,要检查网络类型是否发生了变化,一旦跟前一片传输的网络变得不同,则新的一片不能继续增大而是转而用新网络类型下的初始分片大小进行传输。-----理由:移动互联网下,由于用户的“移动”而时常发生网络类型切换的事情(如,3G变2.5G),一旦网络类型变了,其带宽、时延、稳定性等等因素都发生了很大的变化,所以需要分片大小能“归零”,以迅速适应新的网络,减少失败的概率。(如何确定分片的大小?)
- 分片一旦传输失败,应当使用该网络下的初始分片大小进行重试。----------理由:若网络类型并没有产生切换,但某分片传输失败了,则说明该网络的质量可能已经下降到不再适合传输这个大小的分片,会有较高再次失败的可能性,因此转而重新用该网络下的初始大小的分片进行重试,以提升重传成功概率、同时减少再次失败所带来的流量浪费。
- 每个分片都有一定次数的失败重传机会,当一个分片的所有重传都失败了,才定义为图片传输失败。(可以设置超时重传时间)
a) 进行有效重试,有效就是每一次重试时检查一下当前网络是否断开,如果断开的状态,就不做重试,而是继续等待一个相同时间间隔,最长等待到一个上限时间xs,
b) wifi和流量 分片大小不一致 - 配合后台服务器能力,待用户手工再次重试失败传输的图片时,能断点续传。
- 实时的信息上报后台运行时改成非实时上报。可以先缓存,再进行周期性的上报,
- 非WiFi场景降低耗流量的功能的网络通信频率。 有些推送在非WIFI场景下可以适当降低频率
10.合并网络请求,减少请求次数。