摘要
记录一下近期添加的网络监控。
背景
近期,从产品体验上看,有些业务场景的等待时间有点长,应该可以继续优化;于是开始分析整体耗时,包括处理逻辑与网络耗时,业务逻辑分析略过,与今天主题没关系,这个网络耗时就复杂一点,因为整个网络层是好几层封装在一起的,需要了解各个层的耗时情况,我总不能一个个地方去打信息,再查看信息的时间差,不否认,这是一个方法,但它不是“省油的灯”,原因各位自己YY,这时我得想一个方法,用来监控网络层。
思路
为了满足自己的好奇心,我重新回顾了一下封装的网络层的架构:
1)对外一个代理层
2)中间有控制层(一个或多个)
3)最内部是网络协议层
对于应用层来说,关心的是请求到回调的时长, 而网络模块内部的时间除了核心的网络通讯时间外,还有多个控制层的耗时。
我的思路:对于同一个请求,模块内的请求包可以贯穿整个流程,可以在各个节点上打上时间戳,最终在代码层回调前可得到各个环节的时间点,也就可以得到每层的耗时时长(见下图)。
应用层关心的时长为 du = T6 - T1
网络层调用流程图延伸
用这种方式可以监测网络层的健康程度,统计网络通讯耗时等
这个想法本来只是个人需求,上线后,数据一出来,不仅给客户端提供了帮助,服务器也需要利用这些数据做相应监控;
之后又在这一想法的基础之后增加了一些细分的监控。
小结
以上是我的一个小小经历,也许方法不是最好的,但是对我是适用的。
网友评论