CPU 利用率指标

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

CPU 利用率和任务优先级

Cloud Spanner 在测量 CPU 利用率时,会将任务归为以下几类:

用户任务 系统任务
高优先级 高优先级用户任务 高优先级系统任务

这些是您的应用启动且 Cloud Spanner 将其作为高优先级处理的任务。

包括大多数读取和提交请求。还包括部分批量写入工作,但不包括批量读取。

这些是 Cloud Spanner 启动且将其作为高优先级处理的任务。

包括回填索引和数据拆分。

低优先级 低优先级用户任务 低优先级系统任务

这些是您的应用启动且不需要像高优先级任务那样快完成的任务。

包括从 Dataflow 作业(包括导入/导出)发出的读取和写入操作。

这些是 Cloud Spanner 启动且不需要像高优先级任务那样快完成的任务。

包括数据库压缩、架构变更验证和备份创建。

高优先级任务的执行总是优先于低优先级任务。必要时,Cloud Spanner 会停止所有低优先级任务,并允许高优先级任务使用高达 100% 的可用 CPU 资源。虽然可以在短期内延迟低优先级系统任务,但这些任务最终必须运行以获得最佳性能。因此,您必须为实例预配足够多的节点,以兼顾高优先级和低优先级任务

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

可用指标

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

  • 24 小时的滚动平均值:每个数据库的总 CPU 利用率的滚动平均值,以实例占用 CPU 资源的百分比表示。每个数据点代表过去 24 小时的平均值。
  • 高优先级:高优先级任务的 CPU 利用率,以实例占用 CPU 资源的百分比表示。
  • 总计:总 CPU 利用率,以实例占用 CPU 资源的百分比表示。

    对于实例,您可以按数据库或任务优先级查看总 CPU 利用率。

    对于数据库,您可以按任务优先级查看总 CPU 利用率。

您可以在 Cloud ConsoleCloud Monitoring 控制台中查看这些指标的图表。您还可以使用 Cloud Monitoring 控制台创建有关 CPU 使用率过高的提醒,如下所述。

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

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

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

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

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

降低 CPU 利用率

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

一般来说,我们建议您首先将节点添加到实例中。添加节点后,您可以调查并解决 CPU 利用率过高的根本原因。

添加节点

如果超过了建议的最大 CPU 利用率,我们强烈建议您向实例添加节点,以便其可以继续有效运行。如果要自动执行此过程,您可以创建监控 CPU 利用率的应用,然后根据需要使用 UpdateInstance 方法添加和移除节点。

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

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

优化查询性能

在某些情况下,由于 SQL 查询不够高效,您的实例可能会出现 CPU 利用率高的情况。您可以使用数据库的查询统计信息来识别会导致 CPU 利用率高的查询。然后,根据其查询计划,您可以通过优化这些查询来降低 CPU 利用率。

后续步骤