4种API性能恶化根因分析

api,性能,恶化,分析 · 浏览次数 : 306

小编点评

## 性能恶化根因分析方法概述 **背景:** * 当微服务系统性能恶化时,分析成本高,定位成本高。 * 自动化的恶化根因定位服务对于快速处理基于服务的系统恶化非常重要。 **主要方法:** * **图例调用链分析:** 该方法使用耗时尾事件作为性能异常的根因事件,并选择耗时最长的调用链找到根因。 * **单调用链拓扑分析:** 该方法从历史成功调用链数据中提炼正常调用链模板,并对每条待测用例匹配最佳模板进行差异分析,最后排序推荐根因。 * **拓扑汇聚分析:** 该方法基于拓扑关系,对候选根因进行汇聚,克服了调用链之间异常相互影响导致根因难以确定的问题。 **主要特点:** * 拓扑汇聚分析方法首先在异常调用链内部分析候选根因,再在全局拓扑环境下对候选根因进行汇聚。 * 该方法综合考虑了真实环境中的多种因素,以更准确更高效地推荐根因。 **优点:** * 简化了分析流程,减少了分析成本。 * 克服了调用链之间异常相互影响导致根因难以确定的问题。 * 快速识别和定位恶化接口的根因。 **应用场景:** * 微服务系统性能恶化问题。

正文

摘要:服务发生性能恶化时,需要投入大量人力分析性能异常根因,分析成本高,耗时长。我们提出了一种先在异常调用链内部分析候选根因,再在全局拓扑环境下对候选根因进行汇聚的二级分析方法,克服了调用链之间异常相互影响导致根因难以确定的问题,快速识别和定位恶化接口的根因。

本文分享自华为云社区《【AIOps专题】API性能恶化根因分析》,作者:DevAI。

背景介绍

当微服务系统发生性能恶化问题时,真正有问题的服务和与它相关的服务,都会出现指标异常以及发出告警。大量的告警让运维人员无法确定哪个服务才是恶化根因,只能逐个服务去检查,排除掉那些本身并没有异常的服务,定位成本高。自动化的恶化根因定位服务对于快速处理基于服务的系统恶化是非常重要的。

图例 调用链上的根因定位

基于长尾任务的性能恶化根因分析

一种常见的根因分析方法是将耗时长尾事件作为性能异常的根因事件。首先获得指定时间窗口内的恶化调用链,遍历接口恶化关联的多个调用链,选择耗时最长的一条;再基于耗时主导原则,对这条耗时最长的调用链找到耗时最长的调用事件,并将其作为恶化根因。这种方法的主要缺点在于,只考虑服务的耗时情况,认为根因只会发生在耗时最长的一条恶化调用链,对调用链结构异常、参数错误等导致的性能异常不具有识别能力;

基于单调用链拓扑的性能恶化根因分析

基于单调用链拓扑的性能恶化定位方法,首先从历史成功调用链数据中提炼正常调用链模板,对于每条待测用例,匹配最佳模板,再进行差异分析,最后排序推荐根因。这种根因分析方法仅着眼于根因在单条调用链上的影响因素,忽略了异常在调用链之间的相互影响以及调用链之间的差异。

基于恶化传播图的性能恶化根因分析

此方法针对目前相关性分析方法没有很好考虑到微服务动态位移的问题,设计新的异常评分算法以衡量微服务组件的恶化程度,构建恶化传播图;然后对传统随机游走算法进行优化。然而基于随机游走的方法都存在一个缺陷,即当系统中同时出现多个恶化时,服务可能会受到叠加影响,而导致定位的准确性下降。

基于拓扑汇聚的性能恶化根因分析方法

针对当前痛点,我们提出了一种基于拓扑汇聚的性能恶化根因分析方法,该方法最创新的特征是提出了一种先在异常调用链内部分析候选根因,再在全局拓扑环境下对候选根因进行汇聚的二级分析方法,综合利用了微服务场景下尽可能多的信息,并进行了综合汇聚和多指标评价,克服了调用链之间异常相互影响导致根因难以确定的问题,快速识别和定位恶化接口事件粒度的根因,减少了根因定位分析成本。方案主要包含两个模块,预处理模块和汇聚定位模块。

预处理模块通过输入时间窗口内的正常调用链数据,学习正常调用链模式并建立全局拓扑,包括三个部分:建立正常模板库、提取真实节点拓扑和维护反向可达性表。

汇聚定位模块首先对候选根因从三个维度进行分数计算,再根据汇聚公式对候选根因进行汇聚,包含三个维度的计算:链上得分的计算、链间得分的计算和拓扑得分的计算;再根据组合公式,得到最终的根因推荐分数,分数越高表示越有可能是根因。

总结

针对目前性能恶化定位成本高的问题,我们提出了一种先在异常调用链内部分析候选根因,再在全局拓扑环境下对候选根因进行汇聚的二级分析方法,并提出了一种计算三项得分的多维评价方法,综合考虑真实环境中的多种因素,以更准确更高效地推荐根因。

文章来自:PaaS技术创新Lab,PaaS技术创新Lab隶属于华为云,致力于综合利用软件分析、数据挖掘、机器学习等技术,为软件研发人员提供下一代智能研发工具服务的核心引擎和智慧大脑。我们将聚焦软件工程领域硬核能力,不断构筑研发利器,持续交付高价值商业特性!加入我们,一起开创研发新“境界”!

PaaS技术创新Lab主页链接:https://www.huaweicloud.com/lab/paas/home.html

 

点击关注,第一时间了解华为云新鲜技术~

与4种API性能恶化根因分析相似的内容:

4种API性能恶化根因分析

摘要:服务发生性能恶化时,需要投入大量人力分析性能异常根因,分析成本高,耗时长。我们提出了一种先在异常调用链内部分析候选根因,再在全局拓扑环境下对候选根因进行汇聚的二级分析方法,克服了调用链之间异常相互影响导致根因难以确定的问题,快速识别和定位恶化接口的根因。 本文分享自华为云社区《【AIOps专题

通过4种经典应用,带你熟悉回溯算法

摘要:回溯的处理思想,有点类似枚举搜索。 本文分享自华为云社区《深入浅出回溯算法》,作者:嵌入式视觉。 一,如何理解回溯算法 深度优先搜索算法利用的就是回溯算法思想,但它除了用来指导像深度优先搜索这种经典的算法设计之外,还可以用在很多实际的软件开发场景中,比如正则表达式匹配、编译原理中的语法分析等。

详解4种模型压缩技术、模型蒸馏算法

摘要:本文主要为大家讲解关于深度学习中几种模型压缩技术、模型蒸馏算法:Patient-KD、DistilBERT、DynaBERT、TinyBERT。 本文分享自华为云社区《深度学习实践篇[17]:模型压缩技术、模型蒸馏算法:Patient-KD、DistilBERT、DynaBERT、TinyBE

多线程安全问题原理和4种解决办法

摘要:多线程访问了共享的数据,会产生线程安全问题。 本文分享自华为云社区《多线程安全问题原理和解决办法Synchronized和ReentrantLock使用与区别》,作者:共饮一杯无。 线程安全问题概述 卖票问题分析 单窗口卖票 一个窗口(单线程)卖100张票没有问题单线程程序是不会出现线程安全问

ECharts海量数据渲染解决卡顿的4种方式

场景 周五进行需求评审的时候; 出现了一个图表,本身一个图表本没有什么稀奇的; 可是产品经理在图表的上的备注,让我觉得这个事情并不简单; 那个图表的时间跨度可以是月,年,而且时间间隔很短; 这让我意识到事情并不是想的那样简单; 然后经过简单的询问:如果选择的范围是年;数据可能会上万; 我们都知道;出

[转帖]Linux中执行shell脚本的4种方法总结

https://www.jb51.net/article/53924.htm 这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下 bash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件

[转帖] Linux查看日志文件写入速度的4种方法

https://www.cnblogs.com/codelogs/p/16365448.html 简介# 有时,我们需要查看某个文件的增长速度,如日志文件,以此来感受系统的负载情况,因为一般情况下,日志写入越快,说明系统负载越重。 本文就来介绍下Linux中查看日志增长速度的几种方法,如下: 使用d

基于webapi的websocket聊天室(番外一)

上一篇我已经实现了聊天室,并且在协议中实现了4种类型的消息传输。其实还可以添加video,audio,live等等类型。 不过假如把目前的协议看作RCP1.0版的话,这个版本就只支持有限的4种消息。精力有限啊。也许RCP2.0就可以把video,audio类型加进去? 这不是这篇番外考虑的。而是我在

应用部署初探:3个主要阶段、4种常见模式

应用部署是一个将软件提供给用户的过程,通常包含配置环境、安装及测试等步骤。现如今,大部分企业在部署新的应用程序时,会至少自动化其中一些步骤。应用程序部署的策略会影响该应用的性能、稳定性以及运行速度,因此有时会在向所有人提供更新之前,先对一小部分用户进行测试。 软件开发和用户体验的现代标准要求开发人员

应用部署初探:微服务的3大部署模式

在之前的文章中,我们已经充分了解了应用部署的4种常见模式(金丝雀部署、蓝绿部署、滚动部署及影子部署)。随着云原生技术逐步成熟,企业追求更为灵活和可扩展的系统,微服务架构大行其道。 微服务固然有诸多优点,但也给架构及运维工程师带来了新的挑战。在单体架构中,应用的设计、部署以及扩展都是作为一个单元进行,