当微服务存在时延高时,使用DeepFlow产品仅需三步即可完成问题定位。详细步骤请观看以下视频。
微服务应用运行时,在DeepFlow平台上可层层递进式定位时延高的问题:
第一步,点击应用-路径页面,选中序号为1的sandbox的搜索条件,此搜索条件通过设置应用响应时延为主指标。
即路径都将按响应时延从大到小降序排列,并且设置了阈值,当时延超过阈值时,会将路径标红。
可查看到web-shop服务访问svc-order服务这条路径存在时延高的情况。
第二步,点击时延高的路径,将出现右滑框,右滑框中可通过应用指标、响应时延指标确认时延高的发生的时间点。
通过曲线图可知17:44分出现过时延高的情况,可结合请求率简单判断下是否因为负载高导致时延高,从请求率看负载很低,排除负载高这个原因,继续往下查找问题。
查看应用调用页面,根据时间点查找发生时延高的具体调用,可知为HTTP协议的/createOrder请求存在时延高的情况。
第三步,对这个/createOrder请求进行链路追踪,点击调用链追踪页面,输入时间+对应的请求资源,可找到所需的请求。
点击追踪操作,将进入二级页面查看调用链追踪火焰图,此火焰图包含进程以及网络的多个统计位置,后续还将包含代码基本的统计位置。其中进程的时延数据统计通过创新使用eBPF来实现;网络的统计数据则通过在网络中部署多采集器分析网络数据来实现。
通过火焰图可知/createOrder请求由/shop/full-test请求触发,并在web-shop的服务中发起了实际的请求,此请求在网络中经过了web-shop的pod所在的网卡、pod所在容器节点,到达了svc-order所在的容器节点,通过svc-order的网卡进入到svc_order的pod里面。其中网络上并无过多的时间消耗,而是svc_order所在的pod接收到/createOrder请求后,pod内部的处理花费了大量的时间。
接下来则可以确认时延高的路径:web-shop服务访问svc-order服务;调用详情:HTTP协议的/createOrder;时延高发生的时间点:17:44分;问题具体位置:svc_order所在的pod内部,通过以上信息,将此次故障事件定位为pod内部消耗了大量时间的结果反馈给应用开发部门,让他们接力继续定位代码层面的时间消耗。
谢谢大家的观看,请期待第三期,将为大家讲解如何使用DeepFlow平台追踪NAT前后的流量。
]]>
云杉网络
June 23, 2022
产品资讯