首页 > 其他分享 >4种API性能恶化根因分析

4种API性能恶化根因分析

时间:2023-03-22 20:31:38浏览次数:82  
标签:调用 根因 拓扑 汇聚 API 恶化 性能

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

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

背景介绍

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

4种API性能恶化根因分析_API性能恶化根因

图例 调用链上的根因定位

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

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

4种API性能恶化根因分析_API性能恶化根因_02

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

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

4种API性能恶化根因分析_API性能恶化根因_03

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

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

4种API性能恶化根因分析_PaaS_04

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

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

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

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

4种API性能恶化根因分析_性能恶化_05

总结

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

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

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


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

标签:调用,根因,拓扑,汇聚,API,恶化,性能
From: https://blog.51cto.com/u_15214399/6142255

相关文章

  • 手机号码归属地 API 实现防止骚扰电话,看这一篇就够了(内附设计思路和代码)
     在当今时代,骚扰电话已经成为了很多人日常生活中的一个常见问题,严重影响了人们的工作和生活。为了避免这种情况的发生,企业和机构可以采用手机号码归属地API,以提供更......
  • ASP.NET Core API模型绑定和Action数据返回格式
    参考文档:https://www.cnblogs.com/FlyLolo/p/ASPNETCore2_20.html模型绑定[FromQuery]-从URL中取值。[FromRoute]-从路由中取值。[FromForm]-从表单中取值。Pos......
  • rapid-framework(java web快速开发脚手架,代码生成器)
    web项目脚手架rapid-framework是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭......
  • lazada按关键字搜索商品 API
    为了进行电商平台的API开发,首先我们需要做下面几件事情。1)开发者注册一个账号2)然后为每个Lazada应用注册一个应用程序键(AppKey)。3)下载LazadaAPI的SDK并掌握基本的API......
  • java 微信支付v3 —6.微信支付查询订单API
    正文什么时候会用到这个API?常规情况下,回调接口已经足够我们使用,用户支付成功后,微信会自动调用我们的回调接口进行回调,那么还需要这个API吗?使用场景:微信服务器故障,我们的服......
  • .NET Core WebApi接口ip限流实践
    .NETCoreWebApi接口ip限流实践前言之前一直想实现接口限流,但一直没去实现,然后刚好看到一篇文章是基于AspNetCoreRateLimit组件的限流策略。这个组件不做多的介绍,想了......
  • Solon2 接口开发: 分布式 Api Gateway 开发预览
    建议使用专业的分布式网关产品,比如:nginxapisix[推荐]k8singresscontroller等...对Solon来讲,只有Gateway:它调用本地接口时,则为本地网关;调用远程接口时,则为分布......
  • [FastAPI-04]查询参数-分页
    fromfastapiimportFastAPIBOOKS=[{"id":1,"title":"book1"},{"id":2,"title":"book2"},{"id":3,"title":"book3"},{"id":4,&qu......
  • jenkins学习笔记之十五:SonarSQube API使用
    本章主要通过SonarSQubeAPI在pipeline第一次执行时就指定自定义的质量配置和质量阈API 文档:http://192.168.1.134:9000/web_api一、编写sonarAPI(sonarapi.groovy)注......
  • 开源API网关APINTO:快速入门
    公司领导对选型APINTO网关比较满意,自然少不了体验一下。首先来体验一下API网关最基本的功能:转发请求。Apinto快速入门从Apinto官网扒了个配置流程图,Apinto网关控制台主......