性能瓶颈定位更快更准:ARMS 持续剖析能力升级解析

作者:铖朴、穆司

持续剖析介绍

随着软件技术发展迭代,很多企业软件系统也逐步从单体应用向云原生微服务架构演进,一方面让应用实现高并发、易扩展、高开发敏捷度等效果,但此外也让软件应用链路变得越来越长,依赖的各种外部技术越来越多,一些线上问题排查起来变得困难重重。

尽管经过过去十几年的发展,分布式系统与之对应的可观测技术快速演进,在一定程度上解决了很多问题,但有一些问题定位起来仍然很吃力,如下图是几个非常有代表性的线上常见问题:

持续性能剖析技术是一种通过采集应用相关线程在申请相关资源时的方法栈状态信息,再通过火焰图等可视化技术绘制出对应资源使用分布情况,最后,确定相关时段特定资源波动根因的一种强有力技术。

开箱即用的持续剖析能力

阿里云应用可观测产品 - 应用实时监控服务 ARMS 早在 2022 年就上线了持续剖析产品能力,帮助用户定位常见的性能方面疑难问题:

具体而言,其主要包含以下 3 块核心功能:

代码热点【1】:其通过墙钟热点关联 Trace 信息,可帮助用户定位:

  • 当业务太复杂,偶发性慢调用无法复现时,代码热点可为您还原代码真实方法层面的执行轨迹。
  • 当调用链中因为缺失对应用代码非框架层面的方法埋点时,代码热点帮您还原对应缺失埋点的实际方法调用耗时。

CPU 热点【2】:通过定时采集正在执行 CPU 线程的方法栈快照,帮助用户定位:

  • 当系统 CPU 使用率较高时,帮助您快速定位导致 CPU 消耗高的相关业务逻辑方法栈。

内存热点【3】:通过记录线程每次触发堆内存分配阈值时的内存分配大小/次数,及对应方法栈快照,帮助用户定位:

  • 当系统 JVM 堆内存利用率高时,帮助您快速定位导致堆内存申请量/申请次数高的相关业务逻辑方法栈。

经过过去几年的大量客户使用和持续演进优化,近期,我们在产品功能易用性上进行了一系列升级,本文接下来对其中重要升级进行一一介绍。

优化存储计算引擎:让数据检索如丝般流畅高效

火焰图数据结构复杂,无论是大数据量的存储还是聚合计算都存在不小的挑战,因此,业界一些产品的常见做法是仅支持临时开启功能采集一段时间数据以及较短时间间隔的数据聚合分析,虽然使用过程略显繁琐,但在一定程度上可以实现辅助排查一般性能瓶颈问题,当遇到一些不易复现的场景问题时,问题定位成本就会非常的高!

本次产品升级后,我们在数据格式和查询引擎方面都做了大量优化,持续剖析查询时间间隔和对象从之前的仅支持 1/5/15 分钟数据聚合效果到现在的天级别、多实例、多线程等维度的秒级聚合,让用户聚合范围不仅广还更细,更好地定位各种性能问题。

AI Copilot 驱动火焰图分析:一键洞察性能热点

过去我们从用户侧了解的情况来看,虽然火焰图工具对于排查性能问题非常有效,但是火焰图的阅读对大量客户都存在较大阻碍。因此,我们最新版持续剖析支持基于 AI Copilot 分析火焰图,让不懂火焰图阅读的用户,也能低成本地洞察火焰图中的性能瓶颈。

效果演示

  1. 应用开启持续剖析后,在控制台选择对应应用,以 CPU 热点问题举例,在下图所示的火焰图页面中,点击火焰图右上角的 AI Copilot 分析紫色魔法棒触发进行分析:
  1. 针对上述火焰图,Copilot 快速给出了分析报告和建议:
  1. 从报告结果中可见,java.util.LinkedList.node(int) 方法在火焰图中拥有较长的耗时,CPU 占比较大:
  1. 除了分析和建议,用户还可以提供部分隐匿关键信息的代码片段,让模型结合上下文,给出有针对性的代码优化建议。
  1. 在应用完成代码调整优化后,还可以基于持续剖析能力生成的火焰图回归验证优化结果。

差分火焰图:精准对比性能差异

差分火焰图通过对比两段时间内的性能数据,生成差分火焰图(红色表示性能下降,蓝色表示性能提升),找出不同时段性能显著变化的函数。其对应用性能在一段时间前后有差异变化的场景定位非常有帮助。在新版持续性能剖析中,提供了开箱即用的差分火焰图分析能力。

效果演示

  1. 应用开启持续剖析后,在控制台选择对应应用,例如CPU热点问题定位为例,点击页面左上角的"数据对比"按钮生成前后两段时间的查分火焰图:
  1. 根据生成的差分火焰图,可以基于使用 AI Copilot 分析火焰图查看不同时段的差分热点:

小结

除了以上能力更新以外,更多能力和细节,请参考功能升级公告【4】和产品文档【5】,如果您对文中提到的 ARMS 中的持续剖析功能感兴趣,欢迎扫描下方二维码,加入钉钉群(22560019672)聊讨论和反馈建议!

【1】代码热点

help.aliyun.com/zh/arms/app...

【2】CPU热点

help.aliyun.com/zh/arms/app...

【3】内存热点

help.aliyun.com/zh/arms/app...

【4】功能升级公告

help.aliyun.com/zh/arms/pro...

【5】产品文档

help.aliyun.com/zh/arms/app...

相关推荐
章老师说1 分钟前
B站网关事故背后:OpenResty 与 Lua 的稳定性代价
nginx·云原生·负载均衡·lua·openresty
半亩码田1 小时前
【.NET新特性·第4篇】.NET Aspire 入门:云原生开发新姿势
云原生·.net
装不满的克莱因瓶1 小时前
Spring 全家桶与 Spring 6 新特性详解:从 IoC 到云原生时代
java·spring·云原生·jdk·新特性·spring6
IT策士2 小时前
第 35 篇 k8s之PVC 与 StorageClass:动态存储供应
云原生·容器·kubernetes
武子康2 小时前
调查研究-156 Vercel 全栈应用 前端零配置极速上线:Serverless + 边缘网络 + CI/CD 全栈实战
前端·网络·ci/cd·ai·云原生·serverless·vecel
牧羊狼的狼2 小时前
基于阿里云落地SpringCloudAlibaba云原生微服务:从部署、CI/CD到性能调优、线上排障全体系实战
阿里云·微服务·云原生
这个DBA有点耶11 小时前
云上运维新挑战:当数据库不再“看得见摸得着”
数据库·sql·程序人生·云原生·运维开发·学习方法·dba
张忠琳18 小时前
【kubevirt】(virt-launcher Part 6)virt-launcher 设备/网络/存储/外设层
云原生·架构·kubernetes·kubevirt
容器魔方1 天前
KubeEdge SIG AI: 基于KubeEdge-Ianvs的大模型联邦微调算法
大数据·人工智能·算法·云原生·容器·云计算
tianyuanwo1 天前
企业级容器镜像管理实践:基于JFrog Artifactory的私有镜像仓库搭建与配置指南
docker·云原生·registry