确定出现延迟的位置

本页面介绍了如何识别和排查 Spanner 组件中的延迟时间问题。如需详细了解 Spanner 请求中可能存在的延迟时间点,请参阅 Spanner 请求中的延迟时间点

您可以测量和比较不同组件与数据库之间的请求延迟时间,以确定哪个组件导致了延迟。这些延迟时间包括端到端延迟时间Google Front End (GFE) 延迟时间Spanner API 请求延迟时间查询延迟时间

  1. 在使用服务的客户端应用中,确认端到端延迟时间有所增加。检查客户端指标中的以下维度。如需了解详情,请参阅客户端指标说明

    • client_name:客户端库名称和版本。
    • location:在其中发布客户端指标的 Google Cloud 区域。如果您的应用在Google Cloud之外部署,则指标会发布到 global 区域。
    • method:RPC 方法名称,例如 spanner.commit
    • status:RPC 状态,例如 OKINTERNAL

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

  2. 检查客户端应用的运行状况,尤其是客户端的计算基础设施(例如虚拟机、CPU 或内存利用率、连接、文件描述符等)。

  3. 通过查看客户端指标来检查 Spanner 组件中的延迟时间:

    a. 使用 spanner.googleapis.com/client/operation_latencies 指标检查端到端延迟时间。

    b. 使用 spanner.googleapis.com/client/gfe_latencies 指标检查 Google Front End (GFE) 延迟时间。

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

    • database:Spanner 数据库名称。
    • method:RPC 方法名称,例如 spanner.commit
    • status:RPC 状态,例如 OKINTERNAL

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

  5. 使用 spanner.googleapis.com/api/request_latencies 指标检查 Spanner API 请求延迟时间。如需了解详情,请参阅 Spanner 指标

    如果端到端延迟时间较长,但 GFE 延迟时间和 Spanner API 请求延迟时间较短,则应用代码可能存在问题。这种情况也可能表明客户端与区域级 GFE 之间存在网络问题。如果您的应用存在导致某些代码路径变慢的性能问题,则每个 API 请求的端到端延迟时间可能会增加。客户端计算基础设施中也可能存在上一步未检测到的问题。

    如果 GFE 延迟时间较长,但 Spanner API 请求延迟时间较短,可能有以下原因之一:

    • 从其他区域访问数据库。此操作可能会导致 GFE 延迟时间较长,而 Spanner API 请求延迟时间较短。例如,如果来自 us-east1 区域的客户端的流量在 us-central1 区域具有实例,则 GFE 延迟时间可能会比较长,但 Spanner API 请求的延迟时间可能会比较短。

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

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

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

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

  9. 检查查询分析洞见事务分析洞见,了解是否存在任何查询或事务性能瓶颈。

  10. 按照最早的活跃查询中的步骤,查看可能导致性能瓶颈的所有费用查询,并根据需要取消这些查询。

  11. 请按照以下主题的“问题排查”部分中的步骤,使用 Spanner 内省工具进一步排查问题:

后续步骤