使用指标诊断延迟时间

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

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

延迟时间指标概览

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

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

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

根据每个请求的延迟时间,Spanner 会将请求划分为百分位。您可以查看第 50 百分位和第 99 百分位延迟时间的延迟时间指标:

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

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

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

延迟时间和每秒操作数

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

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

如何诊断延迟时间问题

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

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

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

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

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

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

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

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

  • 您的实例需要更多计算容量。如果您的实例没有足够的 CPU 资源,并且其 CPU 利用率超过建议的最大值,则 Spanner 可能无法快速高效地处理您的请求。

  • 您的某些查询导致高 CPU 利用率。如果您的查询未利用 Spanner 可提高效率的功能(例如查询参数二级索引),或者如果查询包含大量联接或其他 CPU 密集型操作,则查询可能会占用实例的大量 CPU 资源。

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

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

后续步骤