确定发生延迟的位置

本页介绍了如何排查 Spanner 组件问题,找出延迟来源。如需详细了解 Spanner 请求,请参阅 Spanner 请求中的延迟时间点

  1. 在影响您的服务的客户端应用中,确认存在 客户端往返延迟时间导致的延迟时间增加检查客户端指标中的以下维度。

    • 客户端应用名称
    • 客户端位置(例如 Compute Engine 虚拟机可用区)和主机( 虚拟机名称)
    • Spanner API 方法
    • Spanner API 状态

    按这些维度分组,看看问题是否仅限于特定 客户端、状态或方法对于双区域或多区域工作负载,请参阅 。

  2. 检查客户端应用健康状况,尤其是 例如虚拟机、CPU 或内存等 利用率、连接、文件描述符等)。

  3. 检查 Spanner 组件中的延迟时间:

    a. 使用 OpenTelemetry 检查客户端往返延迟时间 或使用 OpenCensus

    b. 使用 OpenTelemetry使用 OpenCensus 检查 Google 前端 (GFE) 延迟时间。

    c. 使用 OpenTelemetry 检查 Spanner API 请求延迟时间 或使用 OpenCensus

    如果客户端往返延迟时间较长,但 GFE 延迟时间较短,且 Spanner API 请求延迟时间后,应用代码 出现问题。这也可能表示客户端之间存在网络问题 和区域级 GFE。如果您的应用存在导致 一些代码路径速度较慢,那么每个 API 的客户端往返延迟时间 请求量可能会增加客户端计算可能也存在问题 在上一步中未检测到的基础架构。

  4. 请检查以下维度 Spanner 指标

    • Spanner 数据库名称
    • Spanner API 方法
    • Spanner API 状态

    按这些维度进行分组,看看问题是否仅限于特定数据库、状态或方法。对于双区域或多区域工作负载 检查问题是否仅限于特定区域。

    如果您的 GFE 延迟时间较长,但 Spanner API 请求较少 出现延迟,可能是由以下原因之一导致的:

    • 从其他区域访问数据库。此操作可能会导致 GFE 延迟时间较长,而 Spanner API 请求延迟时间较短。例如: 来自 us-east1 区域中的实例在 us-central1 区域的 GFE 延迟时间可能较高,但延迟时间较短 Spanner API 请求延迟时间。

    • GFE 层存在问题。查看 Google Cloud 状态信息中心,了解您所在的区域是否持续存在任何网络问题。如果未发现任何问题,请创建支持请求并添加此信息,以便支持工程师可以帮助您排查 GFE 的问题。

  5. 检查实例的 CPU 利用率。 如果该实例的 CPU 利用率高于建议的水平, 应手动添加更多节点,或设置自动伸缩。如需了解详情,请参阅自动扩缩概览

  6. 使用 Key Visualizer 观察和排查潜在的热点或不平衡的访问模式,并尝试回滚与问题时间范围密切相关的所有应用代码更改。

  7. 检查任何流量模式变化。

  8. 查看查询数据分析事务数据分析,了解是否可能存在任何查询或事务性能瓶颈。在大多数情况下,您需要遵循 Spanner 最佳实践来优化查询或事务。

  9. 使用最早的活跃查询中的步骤 查看任何可能导致性能瓶颈的费用查询, 可以根据需要取消查询

  10. 使用以下主题中“故障排除”部分中的步骤来 使用 Spanner 内省进一步排查问题 工具:

后续步骤