海神平台网络监控SDK(Android)开发经验总结

海神平台是我们自主研发的一个移动端质量监控平台,从去年7月份开始至今,已陆续上线了Crash监控、ANR监控、网络监控、自定义错误等功能,目前已接入了公司内10余款APP。针对Crash我们之前在《海神平台Crash监控SDK(Android)开发经验总结》一文中有专门介绍,本文会着重讲一下Android端在开发网络监控SDK过程中的一些实践和经验。希望大家能有所收获。

一 完整网络请求的流程

一次网络请求通常会经过以下步骤:

  1. DNS过程:将目标域名转成IP;
  2. Connect过程:主要包括TCP的三次握手、HTTPS的SSL握手;
  3. 业务数据传输过程:request与response数据传输

下图以OKHttp在github上提供的流程图(https://square.github.io/okhttp/events/)为蓝本,将一些监控指标标示出来。
网络请求流程

借用听云官方文档中的介绍,一次网络请求的响应时间可以分解为如下几部分:

  • DNS时间:将域名转换为数字IP的时间。
  • TCP时间:建立TCP/IP连接的时间。
  • SSL时间:建立安全套接层(SSL)连接的消耗时间。
  • 客户端耗时:客户端等待处理请求响应的耗时。
  • 首包时间:发送HTTP请求开始,到收到服务器返回的第一个数据包所消耗时间。此指标反映服务器的响应速度。
  • 剩余包时间:客户端接受服务器返回的非第一个数据包的消耗时间。

目前的海神版本只提供了DNS时间、TCP时间、SSL时间以及首包时间等四大分解时间。DNS时间主要取决于DNS服务商,TCP时间和SSL时间能够反映当时的网络链路状况,首包时间主要受网络链路状况和服务端响应速度影响。此外数据包大小也会影响到响应时间。

二 基于OKHttp SDK进行Hook的实践
2.1 EventListener

OKHttp从3.11.0版本开始,就提供了类EventListener,详见:https://square.github.io/okhttp/events/。
EventListener的调用方式如下:

OkHttpClient client = new OkHttpClient.Builder()
      .eventListener(new CustomerXXXEventListener())
      .build();

其中CustomerXXXEventListener继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值