Android okhttp http网络监控

okhttp网络监控指标

指标数据
1.入队到请求结束耗时
2.dns查询耗时
3.socket connect耗时
4.tls连接的耗时
5.请求发送耗时
6.响应传输耗时
7.首包耗时
8.响应解析耗时

指标获取

OKHhttp 3.10.0以上提供这些指标监听


屏幕快照 2019-09-06 下午2.11.11.png

指标流程分析

OkHttp整体流程

Okhttp整体流程 (1).png

HTTP请求过程及指标监听插入位置

以下流程图只针对完整的HTTP请求,忽略重定向及HTTP2


Okhttp指标监听分析 (1).png

指标对应方法:
1.入队到请求结束耗时
callStart-->callEnd
2.dns查询耗时
dnsStart-->dnsEnd
3.socket connect耗时
connectStart-->connectEnd
4.tls连接的耗时
secureConnectStart-->secureConnectEnd
5.请求发送耗时
requestHeaderStart-->requestHeaderEnd-->requestBodyStart-->requestBodyEnd
6.首包耗时
responseHeaderStart-->responseHeaderEnd
7.响应解析耗时
responseBodyStart-->responseBodyEnd

插入监听

一般情况
OkHttpClient创建一个单例来提供给APP网络请求使用,造成不同的URL请求监听器是同一个,如下:

public static OkHttpClient defaultClient() {
    return new OkHttpClient.Builder()
        .connectionPool(connectionPool)
        .dispatcher(dispatcher)
        .build();
  }

public Builder() {
      ……
      eventListenerFactory = EventListener.factory(EventListener.NONE);
     ……
    }

    Builder(OkHttpClient okHttpClient) {
      ……
      this.eventListenerFactory = okHttpClient.eventListenerFactory;
      ……
    }

再分析监听器,每个监听方法会返回一个Call对象,这个Call对象正是各个请求创建的Call对象,这样针对每个Call对象,来采集每个URL对应的start,end来进行指标计算

参考文档
https://blog.csdn.net/jhyshenyu/article/details/100195190

你可能感兴趣的:(Android okhttp http网络监控)