本页面介绍了 Spanner 提供的 CPU 利用率指标。您可以 您可以在 Google Cloud 控制台和 Cloud Monitoring 控制台。
CPU 利用率和任务优先级
Spanner 根据来源和优先级衡量 CPU 利用率 任务。
来源:任务可由用户或系统启动。
优先级:优先级有助于 Spanner 确定应该首先执行哪些任务。系统任务的优先级是预先确定的,无法配置。除非另行指定,否则用户任务以高优先级运行。许多数据请求(例如read 和 executeSql)可让您为请求指定较低的优先级。例如,当您运行没有严格性能 SLO 的批量、维护或分析查询时,这非常有用。
通常,优先级较高的任务会在优先级较低的任务之前执行。Spanner 允许高优先级任务 即使存在竞争 优先级较低的任务虽然可以在短期内延迟优先级较低的系统任务,但这些任务最终必须运行。因此,您必须为实例预配足够的计算容量来处理所有任务。
如果没有高优先级任务,Spanner 最多将利用 100% 的任务 从而更快地完成优先级较低的任务。 后台利用率出现峰值并不是问题的征兆。出现高优先级任务(包括用户任务)时低优先级任务几乎是瞬间让步。
下表显示了每项任务的示例:
用户任务 | 系统任务 | |
---|---|---|
高优先级 | 包括数据请求,例如 阅读 或 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 创建提醒 Usage,如下所述。
针对 CPU 利用率高的情况的提醒
下表指定了我们针对 单区域实例、双区域实例和多区域实例。 这些数字是为了确保您的实例具有足够的计算容量 以便在整个可用区丢失的情况下继续传送您的流量 (针对单区域实例)或整个区域(针对双区域和多区域) 实例)。
指标 | 区域实例的最大值 | 双区域和多区域实例的每个区域的数量上限 |
---|---|---|
高优先级总计 | 65% | 45% |
24 小时平滑总计 | 90% | 90% |
为了帮助您保持在建议的最大值之下,请在 Cloud Monitoring 中创建提醒,以跟踪高优先级 CPU 利用率和 24 小时平均 CPU 利用率。
CPU 利用率会对请求延迟产生影响。单个后端服务器过载将会触发更高的请求延迟。应用 应运行基准测试和主动监控, Spanner 能够满足他们的性能要求。
因此,对于性能敏感的应用,您可能需要使用下一部分介绍的技术进一步降低 CPU 利用率。
CPU 利用率超过 100%
在某些情况下,Spanner 实例的 CPU 利用率可能会达到 高于 100%。这意味着该实例占用的 CPU 资源 为实例配置的数量
高于 100% 的 CPU 资源可能会被用于提供更好的预测 CPU 利用率峰值期间的性能 请求流量增加
我们无法保证 CPU 容量超过 100%,也不应依赖 普通数据库操作。
在 CPU 利用率接近或超过 100% 的情况下运行 Spanner 实例 延长运行时间存在降低正常运行性能的风险, 延迟时间额外的 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 利用率。