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

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

相关推荐
你的微笑,乱了夏天1 天前
微服务链路追踪skywalking安装
分布式·后端·中间件·架构·skywalking
孟林洁10 天前
ES + SkyWalking + Spring Boot:日志分析与服务监控(三)
spring boot·elasticsearch·skywalking
醇氧10 天前
【skywalking 】More than 15,000 ‘grammar‘ tokens have been presented. 【未解决请求答案】
linux·运维·skywalking·1024程序员节
醇氧14 天前
【skywalking】监控 Spring Cloud Gateway 数据
java·skywalking
芥末鱿鱼~14 天前
Skywalking教程一
分布式·skywalking
一条行走的鱼19 天前
分布式链路追踪-01初步认识SkyWalking
分布式·skywalking
搬砖天才、19 天前
监控-08-skywalking监控告警
skywalking
服务端相声演员1 个月前
【实战篇】用SkyWalking排查线上[xxl-job xxl-rpc remoting error]问题
skywalking
Slow菜鸟1 个月前
SpringBoot教程(三十二) | SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking
丶只有影子1 个月前
基于Docker部署最新版本SkyWalking【10.1.0版本】
docker·容器·skywalking