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

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

相关推荐
bohu8311 天前
skywalking实现链路追踪-笔记
笔记·skywalking·单机模式
lvyuanj11 天前
IDEA skywalking 启动报错 ClassNotFoundException InstanceConstructorInterceptor
java·intellij-idea·skywalking
cominglately14 天前
centos部署SkyWalking以及在springcloud项目中搭配loki使用
spring cloud·centos·skywalking
白露与泡影16 天前
SkyWalking 和 ELK 链路追踪实战
elk·wpf·skywalking
不爱吃米饭_16 天前
SkyWalking 和 ELK 链路追踪实战
elk·wpf·skywalking
m0_6726565418 天前
SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking
inventecsh19 天前
docker-compose部署skywalking 8.1.0
docker·容器·skywalking
林中伊人20 天前
go引入skywalking
skywalking
wgslucky24 天前
skywalking 配置elasticsearch持久化
大数据·elasticsearch·skywalking
canxiusi24 天前
SkyWalking没办法自动创建ES索引问题
大数据·elasticsearch·skywalking