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

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

相关推荐
Ramboooooooo5 天前
SkyWalking-10.4.0 Docker + Nacos + Elasticsearch 生产级部署手册
elasticsearch·docker·skywalking
阿宇的技术日志12 天前
SkyWalking 跨服务完整链路聚合原理
skywalking
Databuff16 天前
给Skywalking一套更强的后端
运维·开源软件·skywalking
爱学习的小可爱卢17 天前
SpringCloud——深入解析SkyWalking源码:TraceProfiling追踪慢方法
spring cloud·微服务·skywalking
爱学习的小可爱卢17 天前
SpringCloud——SkyWalking全链路监控源码深度解析
java·微服务·springcloud·skywalking
爱学习的小可爱卢17 天前
SpringCloud——SkyWalking告警规则触发WebHook全解析
java·微服务·springcloud·skywalking
LLL人无再少年19 天前
分布式链路追踪系统之二进制安装skywalking
分布式·skywalking
帅喵20 天前
Linux 部署 BanyanDB 0.10.3 生产单机模式对接SkyWalking OAP
skywalking·banyandb
心如鉄补20 天前
分布式链路追踪系统之docker-compose安装skywalking
分布式·docker·skywalking
Linux-187420 天前
分布式链路追踪系统之skywalking java agent 的使用、skywalking web界面简介
云原生·skywalking·分布式链路追踪系统·应用程序性能监控·halo博客系统·skywalking java agent·skywalking web 简介