返回知识库

调试与质量 · 运行证据

链路追踪Distributed Trace

链路追踪用 traceId 把一次请求拆成父子跨度,让你看到时间花在哪一段,而不是只知道「整次很慢」。

先看见下单卡住,再把这一次请求拆成跨度

左边是变慢的下单页,右边是同一 traceId 的瀑布。展开后最长段在 DB;把 cache 标成原因时,短条会被错标。

第 0 步 · 打开工具先打开链路追踪后台,用这次下单的 traceId 打开瀑布图
NOVA CHECKOUT提交订单
夏季衬衫 × 1¥ 269
!

下单卡住 401ms同一订单、同一 traceId,才能对照跨度

Trace
只看见根跨度
web72ms
api401ms
子跨度未展开现在只知道整次慢,还不知道慢在谁。

还没拆开这次请求整次下单很慢。下一步:展开子跨度,看时间到底花在哪个服务。

链路追踪用 traceId 记录一次请求经过的服务。最长子跨度标在瀑布上;出错短跨度不是最慢,标错了要改回来。

知识点:慢在最长的子跨度

上面的工作台已经演示了核心关系,这里只给可复用的命名。

  • 根跨度只说明整次慢,不说明慢在谁。
  • 展开后找最长子跨度;出错短跨度要另案处理,不能当成瓶颈。
  • 日志和错误追踪应携带同一 traceId,才能来回跳。

什么时候用、怎么用

跨服务请求变慢、偶发超时,或你需要证明慢在数据库还是下游时用链路追踪。

  • 入口:打开链路追踪后台,用这次请求的 traceId 打开瀑布。
  • 最短路径:固定同一订单 → 打开 trace → 展开子跨度 → 标最长段 → 再查该服务日志。
  • 单页卡顿优先看性能分析;跨服务等待才优先看 trace。

正反例:同一 401ms 下单,只改你标哪一段

目标都是让下单恢复。差别在于有没有打中真正耗时的跨度。

正例展开后标 DB 286ms

下一步去看 orders.query 和慢查询,而不是重写前端提交按钮。

反例只看根跨度,或把 12ms 的 cache error 当瓶颈

整次仍然 401ms;出错短跨度值得修,但不能解释这次变慢。

快速自测

下单要 401ms,根跨度看起来很长。你该先看什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。