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/动态代理....

在Android Studio 配置AspectJ环境,与简单使用。

在Android Studio 配置AspectJ环境,与简单使用。使用场景:在Android开发中,我们常常要实现如下的业务功能,如:在app的某一块模块中,需要统计出用户在该模块中使用或停留的时长...

AOP在Android中的使用(作为依赖库)

上篇博客中无法对构造方法应用AOP,本篇做了修改 项目目录: 没有给出的类,在上篇博客中: 依赖库中的build.gradle文件 apply plugin: 'com.android.l...

针对Android的Crash监控, 崩溃分析---推荐Bugly

最近在做公司的一个项目时候,需要在项目中增加一个崩溃异常收集和分析的功能,传统的话应该就是Android提供的全局异常捕捉,然后在捕捉后进行记录上传和分析,但是这样去做大大的浪费了很多的人力物力,后来...

捕获异常、存sd卡、封装请求头体、加密map值、网络工具类、生成Json、Https协议、传log日志到服务器、app崩溃友好重启

点击打开链接,免积分下载 在集成了统计SDK(友盟统计,百度统计等)之后,有一个非常有利于测试的功能:错误分析!此功能能够将程序在运行中碰到的崩溃(runtimeException)问题反馈到服务器...

[Android]如何做一个崩溃率少于千分之三噶应用app(18)-组件化与插件化优化

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。 [Android]如何做一个崩溃率少于千分之三噶应用app--章节列表 记得我之前有介绍了一...

[Android]如何做一个崩溃率少于千分之三噶应用app(11)-Gradle组件化优化

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。 [Android]如何做一个崩溃率少于千分之三噶应用app--章节列表 我建立了一个关于Android架...

无线APP时代HTTP请求DNS优化

无线APP时代HTTP请求DNS优化 缘起:无线时代,网络稳定性差,应用流量敏感,APP与server之间每次HTTP请求都需要DNS解析,有没有优化方法呢? 一、PC时代,HTTP请求处理过程 ...
  • chun799
  • chun799
  • 2016年03月24日 23:04
  • 537

分析友盟统计的App崩溃日志

要分析崩溃日志,首先需要保留发布时的编译出来的.xcarchive文件。这个文件包含了.DSYM文件。 这个文件在哪呢?打开XCode->菜单Window->Organizer,在编译成功的文件上右...

iOS App崩溃日志分析

APP新版本上线之前,一般都会经过测试团队的反复测试,确认无bug后才会发布。发布那刻作为开发人员的你,估计欣喜若狂吧,自豪吧!!。发布后线上运行好长一段时间,均安然无恙,可突然有一天你们家CEO说,...
  • Johnkui
  • Johnkui
  • 2015年08月24日 10:11
  • 1481
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:App崩溃分析:如何监控http请求并做出优化
举报原因:
原因补充:

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