skywalking定位慢接口调用链路的使用笔记

发布于:2025-09-13 ⋅ 阅读:(10) ⋅ 点赞:(0)

背景

测试在生产验证过程中反馈接口很慢。响应时间为10s左右。

查看日志确实存在慢接口的日志打印
在这里插入图片描述

解决思路

由于接口没有任何报错,而且只是等待时间过长。因为初步判断是网络路由问题。

其实arthas提供了针对接口的调用的完整链路打印功能
在这里插入图片描述

可是由于生产环境是集群部署的,不清楚请求分给哪个节点处理了。因此使用该工具会比较麻烦。需要每个节点都启动监听

后面发现 skywalking 也是天生支持链路追踪的

需要在 Trace Profiling 中新建任务,定时采样接口请求情况

在这里插入图片描述

新建任务各选项

在这里插入图片描述

请求接口后,就能看到详细的慢接口调用情况

在这里插入图片描述

点击查看可以看到具体的请求接口

在这里插入图片描述

skywalking 提供了多种性能剖析(Profiling) 工具帮助定位深入定位应用性能瓶颈

功能名称 核心目标 剖析维度 关键特点 主要适用场景
Trace Profiling 关联特定慢请求,定位代码行 关联特定Trace 与慢调用链直接关联,精确定位到导致延迟的代码方法或行 分析已知的,可复现的慢接口或高延迟调用链
eBPF Profiling 全进程深度剖析,涵盖内核态 整个进程(物理实例) 无需代码侵入,可剖析用户态和内核态执行,生成火焰图,适合分析系统级瓶颈 分析系统调用,网络栈,锁竞争等底层性能问题,尤其适合非JVM应用
Async Profiling JVM应用内部剖析 JVM进程 专为JVM设计,支持CPU,内存分配,锁分析,集成async-profiler,开销低 深度分析Java应用的CPU热点、内存分配压力、同步锁瓶颈。

SkyWalking 提供了多种性能剖析(Profiling)工具来帮助开发者深入定位应用性能瓶颈。它们各有侧重,共同构成了从代码到系统层面的立体化性能分析能力。下面我用一个表格为你快速梳理它们的核心区别,然后再详细说明。

功能名称 核心目标 剖析维度 关键特点 主要适用场景
Trace Profiling 关联特定慢请求,定位代码行 关联特定Trace 与慢调用链直接关联,精确定位到导致延迟的代码方法或行。 分析已知的、可复现的慢接口或高延迟调用链。
eBPF Profiling 全进程深度剖析,涵盖内核态 整个进程(物理实例) 无需代码侵入,可剖析用户态和内核态执行,生成火焰图,适合分析系统级瓶颈。 分析系统调用、网络栈、锁竞争等底层性能问题,尤其适合非JVM应用。
Async Profiling JVM应用内部剖析 JVM进程 专为JVM设计,支持CPU、内存分配、锁分析,集成async-profiler,开销低。 深度分析Java应用的CPU热点、内存分配压力、同步锁瓶颈。

🔍 详细功能介绍

1. Trace Profiling:关联业务逻辑的慢请求分析

Trace Profiling 用于定位导致特定慢请求(Trace)的代码行。当某个接口调用链耗时过长时,你可以针对该Trace发起剖析,SkyWalking Agent会对相关线程进行周期性栈快照。通过分析这些快照,可以统计出哪些方法或代码行耗时最长,从而精准定位问题根源

典型流程

  1. 在SkyWalking UI的Trace列表中找到一个慢请求(Trace)。
  2. 创建Trace Profiling任务,Agent会开始对执行该请求的线程进行采样。
  3. 分析完成后,查看结果,通常会精确定位到导致延迟的特定代码方法或行
2. eBPF Profiling:系统级的深度性能剖析

eBPF Profiling 利用Linux内核的eBPF技术,无需代码侵入即可对整个进程进行深度监控,包括用户态和内核态的执行情况。它能生成火焰图,帮助你分析系统调用、内核阻塞、网络IO等底层瓶颈,尤其适合分析非JVM应用或需要洞察系统资源的场景

典型流程

1.确保SkyWalking Rover(eBPF Agent)部署在目标主机上。

2.在UI上选择目标服务或进程,创建eBPF Profiling任务(如On-CPU剖析)。

3.Rover会进行采样,并将数据发送回SkyWalking后端。

4.查看生成的火焰图,分析进程在内核和用户空间的函数耗时分布。

3. Async Profiling:JVM生态的专项利器

Async Profiling 专为JVM应用设计,它集成了async-profiler,能够以很低的开销对Java进程进行CPU、内存分配(Allocation)、锁竞争(Lock)等方面的剖析。这对于分析Java应用的内存压力、同步瓶颈等问题非常有效

支持的分析类型

  • CPU采样:分析JVM的CPU热点方法。
  • 内存分配采样:分析对象分配的位置和频率,追踪内存消耗的源头。
  • 锁分析:发现同步瓶颈和竞争激烈的锁

典型流程

  1. 为Java服务配置SkyWalking Java Agent。

  2. 在UI上选择目标服务实例,创建Async Profiling任务,选择事件类型(如CPU、ALLOC)。

  3. Agent控制async-profiler进行采样,并将生成的JFR文件上传。

  4. 在UI中分析火焰图或相关报告,定位JVM层面的性能问题