测量总请求时间,而不是服务时间
如何从客户端的角度测量总请求时间
OpenTelemetry eBPF 自动仪器化工具是一款基于 eBPF 的应用程序自动仪器化工具,能够跟踪服务器端应用程序代码的总请求时间。
当执行远程服务请求时,客户端感知到的响应时间与服务器上测得的响应时间不同。
下图说明了从客户端角度可能发生的各种延迟

- 总请求时间:从客户端的角度来看的时间,包括网络延迟、负载均衡器延迟以及服务中花费的时间。
- 服务时间:从服务角度来看的时间,不包括网络延迟和负载均衡器开销。
如果您仅监控服务时间,可能会错过影响用户体验的重要性能问题。例如,缓慢的负载均衡器、网络拥塞或 DNS 解析问题。
eBPF 使我们能够克服手动仪器化工具的限制。OBI 在内核的 connect/receive/write/close 函数(在 Go 应用程序中还包括 Go 运行时)处插入跟踪点。这种底层仪器化提供了更准确的指标,并允许从客户端的角度捕获请求时间。
OBI 报告的跟踪被划分为不同的跨度

上图显示了 OBI 报告的跟踪的典型结构
- 总请求时间:从客户端的角度来看的时间
- 服务时间:从服务角度来看的时间
- SQL 时间:在 SQL 查询中花费的时间(如果适用)
跟踪跨度是在内核级别生成的,并且能够从客户端的角度捕获总请求时间。这使您能够识别仅从服务角度可能看不到的问题。