测量总请求时间,而不是服务时间

如何从客户端的角度测量总请求时间

OpenTelemetry eBPF 自动仪器化工具是一款基于 eBPF 的应用程序自动仪器化工具,能够跟踪服务器端应用程序代码的总请求时间。

当执行远程服务请求时,客户端感知到的响应时间与服务器上测得的响应时间不同。

下图说明了从客户端角度可能发生的各种延迟

Life cycle of a web service request
  • 总请求时间:从客户端的角度来看的时间,包括网络延迟、负载均衡器延迟以及服务中花费的时间。
  • 服务时间:从服务角度来看的时间,不包括网络延迟和负载均衡器开销。

如果您仅监控服务时间,可能会错过影响用户体验的重要性能问题。例如,缓慢的负载均衡器、网络拥塞或 DNS 解析问题。

eBPF 使我们能够克服手动仪器化工具的限制。OBI 在内核的 connect/receive/write/close 函数(在 Go 应用程序中还包括 Go 运行时)处插入跟踪点。这种底层仪器化提供了更准确的指标,并允许从客户端的角度捕获请求时间。

OBI 报告的跟踪被划分为不同的跨度

OBI traces and spans

上图显示了 OBI 报告的跟踪的典型结构

  • 总请求时间:从客户端的角度来看的时间
  • 服务时间:从服务角度来看的时间
  • SQL 时间:在 SQL 查询中花费的时间(如果适用)

跟踪跨度是在内核级别生成的,并且能够从客户端的角度捕获总请求时间。这使您能够识别仅从服务角度可能看不到的问题。


最后修改于 2025 年 8 月 11 日:迁移 beyla 文档以支持 OBI (#7399) (c6df1ca9)