Skywalking的Trace Profiling 代码级性能剖析功能应用详解

代码级性能剖析

Skywalking 提供了Trace Profiling功能对具体出现问题的span进行代码级性能剖析**。**

代码级性能剖析就是利用方法栈快照,并对方法执行情况进行分析和汇总。并结合有限的分布式追踪 span 上下文,对代码执行速度进行估算。性能剖析激活时,会对指定线程周期性的进行线程栈快照,并将所有的快照进行汇总分析,如果两个连续的快照含有同样的方法栈,则说明此栈中的方法大概率在这个时间间隔内都处于执行状态。从而,通过这种连续快照的时间间隔累加成为估算的方法执行时间。性能剖析可以很好的对线程的堆栈信息进行监控,主要有以下几点优势:

  1. 精确的问题定位,直接到代码方法和代码行;
  2. 无需反复的增删埋点,大大减少了人力开发成本;
  3. 不用承担过多埋点对目标系统和监控系统的压力和性能风险;
  4. 按需使用,平时对系统无消耗,使用时的消耗稳定可能。

由于性能栈快照有一定的性能消耗,所以采集周期不宜过密,如 SkyWalking 实践中,不支持小于 10ms 的采集间隔。

Skywalking中性能剖析实现

在Skywalking中当服务中的端点(endpoints)出现高延迟时,我们可以创建跟踪性能分析任务进行代码级性能剖析。当agent接收到性能分析任务时,它会在收到请求时定期对与端点相关的线程堆栈进行采样。采样完成后,可以分析端点中的线程堆栈,以确定导致性能问题的特定业务代码行。

在General-Service 页面中选择需要进行性能剖析的Service,点击Trace Profiling >新建任务,如下图:

然后我们可以对需要进行性能分析的端点进行监控设置

上图中的参数很容易理解,这里只介绍一下最大采样数。设置为1,表示端点调用一次skywalking agent就能监控到,最大采样数目5表示,调用接口必须5次以上 agent才能监控到。

点击上图中的新建任务后,然后继续访问这个需要分析的url,就可以看见详细的代码分析页面了。

在这里我故意在代码中添加了sleep语句来让url响应变慢!代码实现如下:

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

相关推荐
令狐前生20 小时前
SpringBoot3项目集成Skywalking示例
skywalking
乒乓狂魔3 天前
SkyWalking 也能 AI 智能化了
人工智能·skywalking
摇滚侠10 天前
Skywalking 应用性能监控和可观测性分析平台 简介
skywalking
Databuff10 天前
skywalking 快速使用入门
skywalking
摇滚侠12 天前
Apache Skywalking 实战 阅读笔记 第三章
笔记·apache·skywalking
摇滚侠13 天前
Apache Skywalking 实战 阅读笔记 第二章
笔记·apache·skywalking
Databuff13 天前
国产开源APM databuff 成为 CNCF 顶级项目opentelemetry 官宣Vendor
运维·开源·skywalking·apm·可观测性·opentelemetry
摇滚侠14 天前
Skywalking 全套教程 环境搭建 01-05
skywalking
摇滚侠14 天前
Apache Skywalking 实战 阅读笔记 第一章
笔记·apache·skywalking
就改了1 个月前
Windows 环境 SkyWalking 完整实操教程
windows·微服务·skywalking