🧭 本文为 【SkyWalking 系列】第 4 篇
👉 系列导航:点击跳转
【SkyWalking】性能剖析实战:定位慢接口与阻塞代码
简介
SkyWalking 除了支持链路追踪、告警、日志收集之外,它在**性能剖析(Profile)**方面同样具备强大能力。
它能够基于调用堆栈采样,在指定接口上采集运行过程中真实的调用链路与方法耗时,帮助开发者精准定位慢调用、热点代码、线程阻塞等问题,是故障排查与性能调优的重要工具。
引入
当 trace 无法解释请求为什么慢时,性能剖析可以提供调用堆栈信息,是代码级别定位慢点的重要手段。
1 准备测试接口(模拟慢请求)
我们以一个模拟慢响应的接口为例:
@GetMapping("/order/list")
public List<String> list() throws InterruptedException {
Thread.sleep(2000); // 模拟接口延迟2秒
return Arrays.asList("order1", "order2");
}
通过这种强制阻塞的方式,模拟接口调用过慢的场景,方便我们在 SkyWalking 中测试性能分析能力。
2 新建性能剖析任务
打开 SkyWalking Web UI,进入左侧导航菜单:
性能剖析 → 新建任务
按如下信息填写任务参数:
参数名称 | 示例值 |
---|---|
服务名称 | skywalking-order |
端点(接口路径) | /order/list |
最大采样数 | 5 |
分析时间 | 5分钟 或其他自定义时间段 |
📌 示例操作界面如下图所示:
⚠️注意:
新建任务中的端点名称一定要和我们追踪中的端点一致,否则任务无法捕捉,如图:
3 触发接口调用
在任务激活期间,请通过浏览器或工具多次访问该接口:
curl http://localhost:1003/order/list
访问次数不低于你配置的最大采样数(如配置了 5,就访问至少 5 次)。
SkyWalking 将在服务运行时自动对这些请求进行堆栈采样。
4 查看分析结果
访问完成后,返回性能剖析模块,点击你创建的任务即可查看分析数据。如下图所示:
点击分析,即可查看详细的堆栈调用情况。
5 精准定位慢调用位置
向下展开堆栈路径,可以清晰看到各方法执行耗时。
也就是说,系统识别出了业务逻辑中的 2 秒睡眠操作,可精准定位慢点在具体哪一行代码上。
✅ 总结
SkyWalking 的性能剖析功能通过非侵入式采样方式,真实还原接口调用栈执行过程,是性能优化的利器。
- 可应用于定位慢 SQL、慢方法、异常堆栈;
- 支持任意接口的定向采样分析;
- 整合链路追踪 + 栈分析,大幅提升问题定位效率。
🧩 本文为【SkyWalking系列】第 4 篇
📌 喜欢记得点赞、收藏,或关注我持续更新更多微服务实战内容!
📮 有问题欢迎评论区讨论,看到必回 🙌