延迟时间指标

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

您可以在 Google Cloud 控制台Cloud Monitoring 控制台中查看这些指标。Google Cloud 控制台中的“Monitoring”页面显示了两个与延迟时间相关的指标。第一个示例针对延迟时间,第二个针对延迟时间(按事务类型)

延迟时间

Spanner 的延迟时间指标用于测量 Spanner 处理读取(ReadStreamingReadExecuteSqlStreamingExecuteSqlExecuteBatchDml)或写入 (Commit) 请求函数所花费的时间。选择“读/写”可查看两者的指标。该指标捕获的是实际经过的时间,而不是 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 百分位延迟时间是其处理最慢请求所花费的时间。针对单个请求进行延迟时间测量没有意义。

延迟时间(按事务类型)

Spanner 的延迟时间(按事务类型)指标,显示 Spanner 处理事务所花费的时间。您可以查看读写类型的事务和只读类型的事务的指标。“读写”事务类型包括所有读写事务,“只读”事务类型包括所有只读事务以及单次读取方法

延迟时间指标一样,这些图表将数据按百分位分组。您可以查看“按事务类型划分的延迟时间”指标(第 50 百分位和第 99 百分位延迟时间)。

“延迟时间”指标与“按事务类型划分的延迟时间”指标之间的一个主要区别在于,“延迟时间(按事务类型)”图表可让您按“涉及主要副本”或“不涉及主要副本”细分只读事务类型。选择“涉及前导”会显示一个图表,其中包含涉及该主管的请求。例如,如果从只读副本请求强读取,系统会查询主要副本以确保只读副本具有最新数据。在这种情况下,选择“涉及前导”有助于评估强读事务处理所花的总时间。如果您选择“不涉及任何前导”,则图表会显示不涉及前导的读取。例如,如果向只读副本请求时间戳边界设置为至少 15 秒的过时读取,只读副本可能会提供过时的读取,而不遵循主要副本。相比之下,涉及 Leader 的读取操作可能会遇到更长的延迟时间。您可以使用这些图表来评估强读取和过时读取之间的延迟时间差异。请注意,在某些情况下,过时的读取操作也可能由主要副本处理,在这些情况下,过时读取将显示在“涉及前导”图表下。

对于读写事务,主要事务始终涉及事务,因此图表上显示的数据始终包含请求到达主要部分并接收响应所需的时间。

如何诊断延迟时间问题

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

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

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

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

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

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

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

如果您的应用延迟时间高于预期,并且 Spanner 延迟时间指标也较高,则可能是由以下一些原因导致的:

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

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

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

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

后续步骤