CPU 利用率指标

本页面介绍了 Spanner 提供的 CPU 利用率指标。您可以在 Google Cloud 控制台Cloud Monitoring 控制台中查看这些指标。

CPU 利用率和任务优先级

Spanner 根据任务的来源优先级测量 CPU 利用率。

  • 来源:任务可由用户或系统启动。

  • 优先级优先级有助于 Spanner 确定应首先执行哪些任务。系统任务的优先级是预先确定的,无法配置。除非另行指定,否则用户任务以高优先级运行。许多数据请求(例如readexecuteSql)可让您为请求指定较低的优先级。例如,当您运行没有严格性能 SLO 的批量、维护或分析查询时,这非常有用。

    通常,优先级较高的任务会在优先级较低的任务之前执行。Spanner 允许高优先级任务利用高达 100% 的可用 CPU 资源,即使存在优先级较低的其他任务也是如此。虽然可以在短期内延迟优先级较低的系统任务,但这些任务最终必须运行。因此,您必须为实例预配足够的计算容量来处理所有任务。

    如果没有高优先级任务,Spanner 将利用高达 100% 的可用 CPU 资源来更快地完成低优先级任务。后台利用率出现峰值并不是问题的征兆。出现高优先级任务(包括用户任务)时低优先级任务几乎是瞬间让步。

下表显示了每项任务的示例:

用户任务 系统任务
高优先级 包括未指定优先级或 PRIORITY_HIGH 的数据请求,例如 readexecuteSql 包含数据拆分。
中优先级 包括: 包括:
低优先级 包括指定了 PRIORITY_LOW 的数据请求。 包括:
  • 回填索引。
  • 回填生成的列

可用指标

Spanner 提供以下 CPU 利用率指标:

  • CPU 平滑利用率:每个数据库的总 CPU 利用率的滚动平均值,以实例占用的 CPU 资源的百分比表示。每个数据点代表过去 24 小时的平均值。 可使用此指标来创建提醒和分析一段时间(例如 24 小时)内的 CPU 使用情况。您可以在 Google Cloud 控制台Cloud Monitoring 控制台中以 24 小时的滚动平均值形式查看此指标的图表。

  • 按优先级划分的 CPU 利用率:以实例占用的 CPU 资源的百分比表示的 CPU 利用率,按优先级、用户启动的任务和系统启动的任务进行分组。概括来讲,使用此指标可创建提醒和分析 CPU 使用情况。您可以在 Google Cloud 控制台Cloud Monitoring 控制台中查看此指标的图表。

  • 按操作类型划分的 CPU 利用率:按实例的 CPU 资源的百分比表示的 CPU 利用率,按用户启动的操作(例如读取、写入和提交)进行分组。使用此指标可以获取详细的 CPU 使用量明细并进一步进行问题排查,如调查高 CPU 利用率中所述。您可以在 Cloud Monitoring 控制台中为此指标创建图表。

    您还可以使用 Cloud Monitoring 控制台创建 CPU 利用率提醒,如下文所述。

下表指定了我们针对单区域和多区域实例的最大 CPU 使用率的建议。这些数字可确保在整个地区(对于单区域实例)或整个区域(对于多区域实例)丢失的情况下,您的实例具有足够的计算容量来继续传送流量。

指标 单区域实例的最大值 多区域实例的每个区域的最大值
高优先级总计 65% 45%
24 小时平滑总计 90% 90%

为了帮助您保持在建议的最大值之下,请在 Cloud Monitoring 中创建提醒,以跟踪高优先级 CPU 利用率和 24 小时平均 CPU 利用率。

CPU 利用率会对请求延迟产生影响。单个后端服务器过载将会触发更高的请求延迟。应用应运行基准测试和主动监控,以验证 Cloud Spanner 是否满足其性能要求。

因此,对于性能敏感的应用,您可能需要使用下一部分介绍的技术进一步降低 CPU 利用率。

CPU 利用率超过 100%

在某些情况下,Spanner 实例的 CPU 利用率可能会超过 100%。这意味着,该实例使用的 CPU 资源超过了为其配置的 CPU 资源量。

超过 100% 的 CPU 资源可用于在 CPU 利用率高峰(例如,由于请求流量突然增加导致)期间提供更好、更可预测的性能。

无法保证任何超过 100% 的 CPU 容量,也不应依赖超过 100% 的正常数据库操作。

如果 Spanner 实例长时间运行接近或超过 100% 的 CPU 利用率,有可能导致正常的操作性能和延迟时间下降。额外的 CPU 资源并非确保性能稳定可靠的安全机制。

客户无需为额外的 CPU 利用率付费。

降低 CPU 利用率

本部分介绍了如何降低实例的 CPU 利用率。

通常,我们建议您首先增加实例的计算容量。增加计算容量后,您可以调查并解决 CPU 利用率过高的根本原因。

提高计算容量

如果超过了建议的最大 CPU 利用率,我们强烈建议您增加实例的计算容量,使其可以继续有效运行。如果要自动执行此过程,您可以创建监控 CPU 利用率的应用,然后根据需要使用 UpdateInstance 方法增加或减少计算容量。

如需确定所需的计算容量,请考虑高优先级 CPU 利用率峰值以及 24 小时平滑平均值。请务必分配足够的计算容量,以保证 CPU 利用率不超过建议的最大值。如上文所述,您可能需要为性能敏感的应用分配额外的计算容量(例如,以适应工作负载峰值)。

如果您没有足够的计算容量,Spanner 会按优先级推迟任务。低优先级系统任务(例如数据库压缩和架构变更验证)可以推迟,以优先处理用户任务。但是,这些任务对实例的运行状况至关重要,Spanner 无法无限期推迟这些任务。如果 Spanner 因计算资源不足而无法在特定时间段(大约几小时到一天)内完成其低优先级系统任务,则 Spanner 可能会提高系统任务的优先级。此更改会影响用户任务的性能

利用内省工具进一步调查

如果按操作类型划分的 CPU 利用率指标指示特定类型的操作导致高 CPU 利用率,请使用 Spanner 自省工具进一步排查问题。如需了解详情,请参阅调查高 CPU 利用率

后续步骤