Spanner 请求中的延迟时间点

本页面将简要介绍 Spanner 请求以及每个组件对延迟时间的影响。

Spanner API 请求

用于构建 Spanner API 的概要组件 请求包括:

  • Spanner 客户端库, 它在 gRPC 之上提供一个抽象层 会话管理、事务和重试等通信详细信息。

  • Google Front End (GFE),这是一种常用的基础架构服务。 所有 Google Cloud 服务,包括 Spanner。通过 GFE 会验证是否停止所有传输层安全协议 (TLS) 连接 并应用保护措施来防范拒绝服务攻击。了解详情 GFE,请参阅 Google Front End 服务

  • Spanner API 前端,用于对 API 请求(包括身份验证、授权和配额检查)以及 维护会话和事务状态。

  • Spanner 数据库,负责对 Cloud Storage 存储分区的 数据库。

对 Spanner 进行远程过程调用时, Spanner 客户端库准备 API 请求。然后,API 请求同时通过 GFE 和 Spanner API 前端 然后再访问 Spanner 数据库。

测量和比较不同组件之间的请求延迟时间 和数据库,您可以确定导致问题的组件。 这些延迟时间包括客户端往返、GFE、Spanner API 请求和查询延迟时间

Spanner 架构图。

以下部分介绍了您在之前的 图表。

客户端往返延迟时间

客户端往返延迟时间是指 客户端发送到的 Spanner API 请求的第一个字节 数据库(通过 GFE 和 Spanner API 前端) end),以及客户端从数据库收到的响应的最后一个字节。

客户端往返延迟时间的 Spanner 架构图。

grpc.io/client/roundtrip_latency 指标提供 API 请求的第一个字节被发送到 收到的响应的最后一个字节。

如需捕获并直观呈现此组件的延迟时间,请参阅 使用 OpenTelemetry 捕获并直观呈现客户端往返延迟时间使用 OpenCensus

GFE 延迟时间

Google Front End (GFE) 延迟时间是指 当 Google 网络收到来自客户端的远程过程调用时, 当 GFE 收到响应的第一个字节时。这种延迟 包括任何 TCP/SSL 握手。

GFE 延迟时间的 Spanner 架构图。

来自 Spanner 的每个响应(无论是 REST 还是 gRPC)都包含 包含 GFE 和后端之间总时间的标头( Spanner 服务)。这个 有助于更好地区分 和 Google 广告网络。

spanner/gfe_latency 指标捕获并公开 Spanner 请求的 GFE 延迟时间。

如需捕获并直观呈现此组件的延迟时间,请参阅 使用 OpenTelemetry 捕获并直观呈现 GFE 延迟时间使用 OpenCensus

Spanner API 请求延迟时间

Spanner API 请求延迟时间是指时长(以秒为单位) 发送一个 Spanner API 收到的响应的最后一个字节 前端发送。延迟时间包括处理 API 所需的时间 在 Spanner 后端和 API 层中发送。 不过,此延迟时间不包括网络开销或反向代理开销 Spanner 客户端与服务器之间传递。

Spanner API 请求延迟时间的 Spanner 架构图。

spanner.googleapis.com/api/request_latencies 指标捕获的是 并公开了 Spanner 请求。

如需捕获并直观呈现此组件的延迟时间,请参阅 使用 OpenTelemetry 捕获并直观呈现 Spanner API 请求延迟时间使用 OpenCensus

查询延迟时间

查询延迟时间是指运行 SQL 所需的时长(以毫秒为单位) Spanner 数据库中的查询。

Spanner 查询延迟时间的架构图。

查询延迟时间适用于 executeSql API。

如果 QueryMode 参数设置为 PROFILE,则 Spanner 的 ResultSetStats

QueryMode 设置为 PROFILE 即可返回查询 以及执行统计信息和结果此外, ResultSetStats 包含运行查询的用时 Spanner 数据库。

如需捕获并直观呈现此组件的延迟时间,请参阅 使用 OpenTelemetry 捕获并直观呈现查询延迟时间使用 OpenCensus

后续步骤