当前位置:首页 > 新闻中心 >新闻详情

基于异构图的大规模微服务系统性能问题诊断

发布时间:2024-05-23 15:29:00

简介:本文介绍由南开大学、清华大学、腾讯、国家超级计算天津中心共同合作的论文:基于异构图的大规模微服务系统性能问题诊断。该论文已被IEEE Transactions on Services Computing期刊录用。
 
论文标题:Diagnosing Performance Issues for Large-Scale Microservice Systems with Heterogeneous Graph
 
作者:陶磊,卢香琳,张圣林,栾佳琪,李英可,李明杰,李则言,于庆阳,谢虎成,徐锐杰,胡宸源,杨灿群,裴丹
 
-----------------------------------------------------------

微服务系统的可用性对业务运营和企业声誉至关重要。然而,微服务系统的动态性和复杂性给大规模微服务系统的性能问题诊断带来了重大挑战。在调查了腾讯公司数百个真实的性能问题案例后,文章发现,以前的故障排除方法未能准确定位根本原因,因为它们忽略了因果关系与调用关系之间的不一致性。因此,文章提出了一种新方法——MicroDig,用于诊断大规模微服务系统的性能问题。具体来说,MicroDig 构建了一个异构传播图,以捕捉调用与微服务之间的因果关系。然后,它进行面向异构性的随机游走(Heterogeneity-Oriented Random Walk,HORW),以确定导致问题的微服务。
 
文章在三个数据集上评估了 MicroDig 的性能,这些数据集包括来自腾讯的60个真实性能问题案例、来自广泛使用的开源微服务系统中收集的80个手动注入的问题以及来自一家全球顶级商业银行使用的电子商务系统中的128个性能问题。MicroDig 在这三个数据集上的Top-3准确率分别达到了94.1%、85.5%和93.8%,显著优于六种流行的基准方法。
 
背   景   

在真实的生产环境中,微服务的主要性能问题是高延迟和低可用性,这可以从超时调用次数和异常调用次数中分别感知到。性能问题可能由于多种原因引起,例如主机资源有限、硬件可用性和网络不稳定。当某个服务出现性能问题时,这些异常会沿着调用拓扑传播,最终可能影响到微服务系统提供的外部服务。为了保证卓越的用户体验,运维人员配置了服务级别指标(SLI)和服务级别目标(SLO)来监控微服务系统的可用性。当某个服务的运行状态未能达到SLO标准时,就会检测到性能问题。由于服务数量众多、关系复杂且动态变化,以及微服务系统中调用关系与因果关系之间的不一致性,确定根本原因仍然具有挑战性。
 
研究动机   

有些工作将调用关系视为异常传播的因果关系,这在文章提到的场景中过于简化。图1展示了一个真实的性能问题,其中A、B和C分别代表三个微服务。A调用B和B调用C的异常调用次数都增加了,然而,当运维人员深入调查细节时,他们发现C没有任何有意义的错误报告。另一方面,来自B的调用(即B调用C)是异常的,这是因为B耗尽了文件描述符,无法与C建立新的连接。总之,A调用B和B调用C的异常率是由B的系统资源所导致的,在这种情况下,B是根本原因服务,这无法通过沿着调用关系进行搜索来定位。在调查了腾讯数百个性能问题后,文章发现超过35%的性能问题受到这类情况的影响。
 
基于上述观察,文章发现一个调用的异常不能仅直接归因于下游服务。相反,调用方和被调用方都可能导致这种情况。因此,仅通过调用关系来捕捉异常传播是不够的。文章提出了一种图模型即异构传播图,来比调用关系更精确地描述因果关系。
 
 
 
 图1 一个真实的性能问题案例
 
 
方法设计   

MicroDig的核心框架如图2所示。当微服务系统的监控组件检测到某个服务的运行状态未能达到SLO标准时,MicroDig会被触发以定位问题根因。
 
 
图2 MicroDig的核心框架
 
MicroDig由三个关键阶段组成:
 
关联调用识别阶段:MicroDig从问题微服务开始搜索,找到与性能问题相关的候选微服务。大规模微服务系统通常会在短时间内产生海量的服务调用,其中大量的服务调用与性能问题无关。为了更准确地确定与性能问题相关的微服务,文章首先选择构建端口级别的调用图。然后通过对图进行BFS(广度优先搜索)和异常检测来保留相关的调用和相应的微服务。最后,将图中的端口级节点聚合到服务级,如图3(b)所示。文章首先检测异常端口,因为如果先进行端口聚合,则异常端口级调用可能会被同一微服务的正常调用淹没,这可能会导致根因服务在这一步被过滤掉。
 
异构传播图构建阶段:MicroDig以微服务之间的调用和候选微服务作为节点,构建异构传播图。在关联调用识别阶段构建的关联图是有向的,其边的方向表示服务之间的调用关系。关联图不能直接用作根因定位的因果图。文章基于关联图构建了一个反映调用和服务之间因果关系的异构传播图。如图3(c)所示,文章首先将关联图中的边(即边S1→S2、边S2→S3等)抽象为调用节点(表示为C12、C23等),并将关联图中的节点抽象为服务节点(表示为S1、S2等)。然后,文章在因果图中添加调用节点与服务节点之间的边和两个不同调用节点之间的边。最后,构建具有不同类型节点和边的异构传播图,在传播图中,边是从原因指向结果。为了执行根因定位,文章翻转传播图中的每条边,并使边从结果指向原因。
 
根因服务定位阶段:提出了一种面向异构性的随机游走算法,在异构图上进行根因微服务排名。通常在因果图上使用排序算法来找出根本原因,然而传统的排序算法不能直接应用于异构因果图。因此,文章提出了一种新颖的排名算法,即面向异构性的随机游走(HORW),结合相关系数和异常检测结果进行根因微服务排名。
 
 
图3 异构传播图的构建过程
 
 
实验评估    

为了评估MicroDig的性能,文章进行了广泛的评估实验,使用了从全球顶级多媒体服务提供商腾讯收集的60个真实性能问题、从广泛使用的开源微服务系统Train-Ticket中收集的80个手动注入的性能问题,以及从全球顶级商业银行的电子商务系统中收集的128个性能问题。最终的实验结果如表1所示,在真实世界数据集和模拟数据集上,MicroDig在94.1%、85.5%和93.8%的性能问题中将真正的根因微服务排名在前三,分别比六种流行的基准方法高出16.0%、32.2%和88.5%。
 
图片表1 实验结果
 
 
总  结   

文章提出了一种名为MicroDig的方法,用于大规模微服务系统中性能问题的自动根因定位。MicroDig识别关联调用,并基于动态微服务调用构建异构传播图,再应用面向异构性的随机游走(HORW)来发现异常传播模式并定位问题服务。通过使用从腾讯收集的真实性能问题以及从Train-Ticket和中国建设银行收集的手动注入问题,证明了MicroDig的有效性和效率。与六种流行的根因定位方法相比,MicroDig表现出色。
 
总体而言,MicroDig在性能问题自动根因定位方面展现了很大的潜力和实际应用价值,有效解决了大规模微服务系统中性能问题的根因定位难题,显著提高了诊断的准确性和效率。



 

TOP

010-82362970