延迟时间指标

本页面介绍 Cloud Spanner 提供的延迟时间指标。如果您的应用遇到延迟时间较长的情况,请使用这些指标帮助您诊断和解决问题。

您可以在 Google Cloud ConsoleCloud Monitoring 控制台中查看这些指标。

延迟时间指标概览

Cloud Spanner 的延迟时间指标用于测量 Cloud Spanner 服务处理请求所需的时间。指标捕获的是实际经过的时间,而不是 Cloud Spanner 使用的 CPU 时间。

这些延迟时间指标不包括在 Cloud Spanner 外部出现的延迟时间,例如网络延迟时间和应用层内的延迟时间。如需测量其他类型的延迟时间,您可以使用 Cloud Monitoring 通过自定义指标检测应用

您可以在 Cloud ConsoleCloud Monitoring 控制台中查看延迟时间指标图表。您可以查看包含读取和写入的组合延迟时间指标,也可以查看读取和写入的单独指标。

根据每个请求的延迟时间,Cloud Spanner 将请求分组到不同的百分位中。您可以查看第 50 百分位和第 99 百分位延迟时间的延迟时间指标:

  • 第 50 百分位延迟时间:所有请求中处理速度最快的 50% 的最长延迟时间(以秒为单位)。例如,如果第 50 百分位的延迟时间是 0.5 秒,表示有 50% 的请求可以在 0.5 秒内得到处理。

    该指标有时称为“延迟时间中间值”

  • 第 99 百分位延迟时间:所有请求中处理速度最快的 99% 的最长延迟时间(以秒为单位)。例如,如果第 99 百分位延迟时间是 2 秒,表示有 99% 的请求可以在 2 秒内得到处理。

延迟时间和每秒操作数

如果实例在一段时间内处理的请求数量较少,那么此时间段内的第 50 百分位和第 99 百分位延迟时间对于判断该实例的整体性能而言意义不大。在此类情况下,极少数的离群值会大幅改变延迟时间指标。

例如,假设一个实例在一小时内处理 100 个请求。在这种情况下,该小时内此实例的第 99 百分位延迟时间是其处理最慢请求所花费的时间。针对单个请求进行延迟时间测量没有意义。

如何诊断延迟时间问题

以下部分介绍了几个常见问题的诊断方法,这些问题可能导致应用遇到较长的端到端延迟时间。

如需快速查看实例的延迟时间指标,请使用 Cloud Console。如需详细了解指标并查找延迟时间与其他指标之间的相关性,请使用 Cloud Monitoring 控制台

总延迟时间较长,Cloud Spanner 延迟时间较短

如果您的应用延迟时间高于预期,但 Cloud Spanner 的延迟时间指标明显低于总的端到端延迟时间,则应用代码中可能存在问题。如果您的应用存在导致某些代码路径变慢的性能问题,则每个请求总的端到端延迟时间可能会增加。

如需检查此问题,请对应用进行基准化分析,以找出比预期速度慢的代码路径。

您还可以注释掉与 Cloud Spanner 通信的代码,然后再次测量总延迟时间。如果总延迟时间没有明显变化,则 Cloud Spanner 不太可能是导致高延迟时间的原因。

总延迟时间和 Cloud Spanner 延迟时间均较长

如果您的应用延迟时间高于预期,并且 Cloud Spanner 的延迟时间指标也很高,可能有以下原因:

  • 您的实例需要更多节点。如果您的实例没有足够的 CPU 资源,且其 CPU 利用率超过推荐的最大值,那么 Cloud Spanner 可能无法快速有效地处理您的请求。

  • 您的某些查询导致高 CPU 利用率。如果您的查询没有使用能够提高效率的 Cloud Spanner 功能,例如查询参数二级索引,或者查询包含大量联接或其他 CPU 密集型操作,则查询会占用很大一部分实例的 CPU 资源。

如需检查这些问题,请使用 Cloud Monitoring 控制台查找高 CPU 利用率和延迟时间较长之间的相关性。此外,请检查实例的查询统计信息,以便识别同一时间段内的 CPU 密集型查询。

如果您发现在某一时段,CPU 利用率较高,并且延迟时间较长,请采用以下方法解决此问题:

  • 如果您没有发现许多 CPU 密集型查询,请为实例添加节点

    添加节点可以提供更多 CPU 资源,并使 Cloud Spanner 能够处理更大的工作负载。

  • 如果您发现有 CPU 密集型查询,请查看查询执行计划以了解查询速度慢的原因,然后按照 Cloud Spanner 的 SQL 最佳做法更新查询。

    您可能还需要检查数据库的架构设计并更新架构,以使查询更高效。

后续步骤