本页介绍了 Spanner 提供的 CPU 利用率指标。您可以在 Google Cloud 控制台和 Cloud Monitoring 控制台中查看这些指标。
CPU 利用率和任务优先级
Spanner 根据任务的来源和优先级来衡量 CPU 利用率。
来源:任务可由用户或系统启动。
优先级:优先级有助于 Spanner 确定先执行哪些任务。系统任务的优先级是预先确定的,无法配置。除非另行指定,否则用户任务以高优先级运行。许多数据请求(例如read 和 executeSql)可让您为请求指定较低的优先级。例如,当您运行没有严格性能 SLO 的批量、维护或分析查询时,这非常有用。
通常,优先级较高的任务会在优先级较低的任务之前执行。Spanner 将允许高优先级任务利用高达 100% 的可用 CPU 资源,即使存在较低优先级的争用任务也不例外。虽然可以在短期内延迟优先级较低的系统任务,但这些任务最终必须运行。因此,您必须为实例预配足够的计算容量来处理所有任务。
如果没有高优先级任务,Spanner 将利用高达 100% 的可用 CPU 资源来更快地完成低优先级任务。后台利用率出现峰值并不是问题的征兆。出现高优先级任务(包括用户任务)时低优先级任务几乎是瞬间让步。
下表显示了每项任务的示例:
用户任务 | 系统任务 | |
---|---|---|
高优先级 | 包括数据读取(例如 read 或 executeSql),其中未指定优先级或指定 PRIORITY_HIGH。 | 包括数据拆分。 |
中优先级 |
包括:
|
包括:
|
低优先级 | 包括指定了 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 利用率高的情况的提醒
下表列出了我们针对区域性实例、双区域实例和多区域实例建议的最大 CPU 使用率。这些数字可确保在整个可用区(对于区域实例)或整个区域(对于双区域和多区域实例)丢失的情况下,您的实例具有足够的计算容量来继续传送流量。
指标 | 区域实例的最大值 | 双区域实例和多区域实例的每个区域的最大值 |
---|---|---|
高优先级总计 | 65% | 45% |
24 小时平滑总计 | 90% | 90% |
为了帮助您保持在建议的最大值之下,请在 Cloud Monitoring 中创建提醒,以跟踪高优先级 CPU 利用率和 24 小时平均 CPU 利用率。
CPU 利用率会对请求延迟产生影响。单个后端服务器过载将会触发更高的请求延迟。应用应运行基准测试和主动监控,以验证 Spanner 是否满足其性能要求。
因此,对于性能敏感的应用,您可能需要使用下一部分介绍的技术进一步降低 CPU 利用率。
CPU 利用率超过 100%
在某些情况下,Spanner 实例的 CPU 利用率可能会超过 100%。这意味着实例使用的 CPU 资源超出了为实例配置的数量。
在 CPU 利用率激增(例如因请求流量突然增加而导致)期间,系统可能会使用超过 100% 的 CPU 资源来提供更好、更可预测的性能。
我们无法保证任何高于 100% 的 CPU 容量,因此在执行正常的数据库操作时不应依赖于此类容量。
如果 Spanner 实例的 CPU 利用率长时间接近或超过 100%,则可能会导致正常运行性能和延迟时间下降。额外的 CPU 资源并非可靠的机制,无法保证始终如一的性能。
客户无需为此额外的 CPU 使用量付费。
降低 CPU 利用率
本部分介绍了如何降低实例的 CPU 利用率。
通常,我们建议您首先增加实例的计算容量。增加计算容量后,您可以调查并解决 CPU 利用率过高的根本原因。
提高计算容量
如果超过了建议的最大 CPU 利用率,我们强烈建议您增加实例的计算容量,使其可以继续有效运行。如果要自动执行此过程,您可以创建监控 CPU 利用率的应用,然后根据需要使用 UpdateInstance
方法增加或减少计算容量。
如需确定所需的计算容量,请考虑高优先级 CPU 利用率峰值以及 24 小时平滑平均值。请务必分配足够的计算容量,以保证 CPU 利用率不超过建议的最大值。如上文所述,您可能需要为性能敏感的应用分配额外的计算容量(例如,以适应工作负载峰值)。
如果您没有足够的计算容量,Spanner 会按优先级水平推迟任务。低优先级系统任务(例如数据库压缩和架构变更验证)可以推迟,以优先处理用户任务。但是,这些任务对于实例的运行状况至关重要,Spanner 不能无限期推迟这些任务。如果由于计算资源不足,Spanner 无法在一定时间段内(大约几小时到一天)完成其低优先级系统任务,Spanner 可能会提高系统任务的优先级。此更改会影响用户任务的性能。
利用内省工具进一步调查
如果按操作类型划分的 CPU 利用率指标表示特定类型的操作导致 CPU 利用率高,请使用 Spanner 内省工具进一步进行问题排查。如需了解详情,请参阅调查高 CPU 利用率。
后续步骤
- 使用 Google Cloud 控制台或 Cloud Monitoring 控制台监控实例。
- 针对 Spanner CPU 利用率创建提醒。
- 了解如何更改 Spanner 实例的计算容量。
了解如何查找延迟时间较长与其他指标之间的相关性。
如需了解如何排查由特定操作类型导致的高 CPU 使用率,请参阅调查高 CPU 利用率。