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