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响应变慢!代码实现如下:

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

相关推荐
流烟默5 天前
日志里的 TID 为什么是 N/A:SkyWalking 异步线程池 traceId 传递实战
skywalking·异步线程池
AscendKing6 天前
可观测性选型:ELK vs SkyWalking,到底哪个更重?是二选一,还是两者一起部署?
elk·skywalking·apm·可观测
AscendKing6 天前
Docker Compose 一键部署 SkyWalking 10.2.0 + Elasticsearch8.11,分布式链路追踪完整实战
elasticsearch·docker·skywalking·链路追踪·微服务监控
飘然生6 天前
traceId链路 skywalking java agent
java·开发语言·skywalking
Thomas.Sir8 天前
第27课:SkyWalking全链路追踪实战 & 微服务调用链路分析
spring cloud·微服务·skywalking
lisanmengmeng1 个月前
分布式追踪与监控:Skywalking(三)
分布式·skywalking
lisanmengmeng1 个月前
分布式追踪与监控:Skywalking介绍(一)
分布式·skywalking
Jinkxs2 个月前
SkyWalking - 生产级部署:集成 Elasticsearch 作为后端存储
大数据·elasticsearch·skywalking
就叫_这个吧2 个月前
IDEA本地springcloud项目 接入SkyWalking实现链路追踪
spring cloud·intellij-idea·skywalking