App崩溃分析:如何监控http请求并做出优化

转载 2015年07月10日 13:04:45

移动互联网时代,移动App与服务器之间的交互越来越频繁,数据量也越来越大,伴随而来的各种网络连接问题也在影响着各App的留存率。如何保证http请求的质量成为开发者们需要解决的一大问题。本文着重讲述http请求遇到的问题以及该如何监控和优化。

http请求遇到的问题

在App开发过程中,通常是用无线网络去做测试,这样网络的连通率、速度以及响应时间都是处在一个相对理想的情况下,但是在App发布后,用户使用场景往往是2G、3G,以及一些网络水平初级的地区,网速和连通率都在一个不稳定甚至极低的水平,这时,一系列的问题随之而来,其中我们主要讨论两点:

  • 响应时间:由于网络速度的下降, 响应时间开始变长,同一个url的访问时间可能会成倍增长,增加用户的等待时间;
  • 错误率:由于网络质量的下降,丢包错包概率成倍增长,由于请求的错误也会导致服务器端处理错误率的提高,可能会造成返回数据为空或者错误,致使用户增加使用成本。

如何去优化?

应用向服务器发送http请求,一般都是调用的系统接口或者第三方接口(比如OKHttp):    


这个时候,我们可以在应用调用接口时,加一个收集模块来采集http信息,如图:


Collection module可以用不同的实现方式:iOS利用Runtime通过代码注入的方式去获取相关信息;Android通过自定义URLStreamHandler去获取http信息,之后通过一些统计工具可以直观地去分析和优化应用的网络模块。

如何利用网络监控去做优化?

那么,究竟该如何利用好网络监控来进行应用优化?开发者可以从http响应时间、http错误率、请求量(rpm)和Data I/O四个维度监控http请求,并监测每个url的运营商、终端设备、错误码。同时,地理定位功能可以提供每个地区网络状况的平均值,方便开发者去分析和优化。

  • http响应时间

通过响应时间的长短,可以判断哪个url去优化,如果响应时间长,是不是后台查询过慢?还是因为运营商基站建的少网络信号差?

  • http错误率

通过错误率,可以知道访问某个url时最多的错误码是多少,根据错误码去确定是请求错误还是服务器错误,从而缩小问题的查找范围。

  • 请求量(rpm)

通过查看url的请求量,可以去推断用户的喜好,从而做一些定制化的服务,也可以通过这个指标去确定App端发请求频率是否正常。

  • Data I/O

通过Data I/O,可以知道某个url的请求数据大小是否正常,是否流量过大可以进行压缩从而节省用户的费用。


当然,每个指标不是独立的,而是应该综合来判断。举一个例子,做一个在线图库的应用,用户反映一直刷不出图,那就可以这样推断一下:看http响应时间,如果正常,有可能是App收到数据后显示有问题,如果过长,那么可能是服务器端问题;再看错误率,如果很高,那么有可能是服务器返回结果有问题,如果不高,那么有可能是因为网络信号差导致的。

这个时候,再看一下请求量和Data I/O,如果请求量很小,但是Data I/O很高,那么是否可以优化http请求策略?如果改成每次请求一屏的数据,根据用户的翻页情况发送多次请求,而不是一次去请求几页数据,那么这样数据总量没变,但是用户看到的效果却是每翻一页,只要很少的时间就可以显示出图片,这样就可以提升用户体验。

简单论述了网络问题对于移动App产生的影响,以及如何去监控http请求并做出优化。当然,实现监控的方式有很多,也可以有很多技术上的玩法,但无论技术实现得有多好,如何优化App?提升用户体验和留存率,才是开发者最该关心的问题

监控自己APP的http/https网络请求的地址和请求耗时

关于监控http/https网络请求的思路, 目前想到两种实现思路:第一种实现思路是hook http请求的根接口, 第二种实现思路是aop/动态代理....
  • kslinabc
  • kslinabc
  • 2016年06月28日 14:57
  • 6027

强大的Http监控工具Fidder

软件下载:http://fiddler2.com/get-fiddler 软件学习:http://www.cnblogs.com/TankXiao/archive/2012/02/06/233772...
  • jcx5083761
  • jcx5083761
  • 2013年08月19日 17:52
  • 9008

App崩溃分析:如何监控http请求并做出优化

移动互联网时代,移动App与服务器之间的交互越来越频繁,数据量也越来越大,伴随而来的各种网络连接问题也在影响着各App的留存率。如何保证http请求的质量成为开发者们需要解决的一大问题。本文着重讲述h...
  • baidu_28195399
  • baidu_28195399
  • 2015年07月10日 13:04
  • 602

android使用timer检测网络请求时长

private void startTimer() { if (mTimerTask == null) { mTimerTask = new TimerTask() { @Override publi...
  • nnmmbb
  • nnmmbb
  • 2015年10月13日 18:42
  • 1445

http请求过程及性能优化分析

http请求当在浏览器中输入地址至获取服务器的相应,总共经历了以下四个步骤: DNS解析在向浏览器输入一个网站时,如www.qq.com,浏览器最终访问的是一个ip地址,也就是说www.qq.com...
  • j_bleach
  • j_bleach
  • 2017年07月17日 09:44
  • 320

Android中app的请求抓包工具 Fiddler 详解

Android中app的请求抓包工具 Fiddler 详解 原文地址:http://blog.csdn.net/jiangwei0910410003/article/details/19806999 ...
  • achang21
  • achang21
  • 2015年05月15日 16:12
  • 6656

Android 资源大全中文版

Android 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列的资源整理。awesome-android 是JStumpp 发起维护的 Andr...
  • hyb1234hi
  • hyb1234hi
  • 2016年09月22日 13:56
  • 437

Android app 性能测试工具

 手机上的app分为基于HTML5的app(类似于pc上的b/S应用)和本地app(类似于C/S结构)。 所以测试上我们也可以充分吸收web的b/s和c/s测试经验。但是不同于pc上的应用测试...
  • cwcwj3069
  • cwcwj3069
  • 2015年06月05日 14:59
  • 13078

mac上的http请求监控软件

试用多款http监控软件,目标:1.免费,2.实用目前找到的最好用的是,charles,中文叫“青花瓷”。它有一个功能比较完善的免费试用版,监控http时可以查看http的详细参数,符合我的需求。ht...
  • imanapple
  • imanapple
  • 2015年07月31日 21:13
  • 1625

无线APP时代HTTP请求DNS优化

无线APP时代HTTP请求DNS优化 缘起:无线时代,网络稳定性差,应用流量敏感,APP与server之间每次HTTP请求都需要DNS解析,有没有优化方法呢? 一、PC时代,HTTP请求处理过程 ...
  • chun799
  • chun799
  • 2016年03月24日 23:04
  • 679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:App崩溃分析:如何监控http请求并做出优化
举报原因:
原因补充:

(最多只允许输入30个字)