本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CPU 利用率高
CPU 利用率过高是您在使用 Amazon DocumentDB 时在某个时候可能会遇到的问题之一。本节提供解决问题的见解。
识别-发现问题
Amazon DocumentDB 实例上的 CPU 使用率过高,会增加所有数据库操作的延迟,从而导致应用程序运行缓慢。当 Amazon DocumentDB CPU 使用率超过最佳水平时,查询执行时间会增加,连接建立所需的时间更长,应用程序的响应速度也会降低。主实例的 CPU 峰值会减慢写入操作,而副本上的 CPU 峰值会导致读取操作的延迟更高。
Amazon DocumentDB 中 CPU 使用率过高的一些常见原因可能是:
-
集合扫描:没有适当索引的查询会强制执行完整的集合扫描,从而消耗过多的 CPU 来检查每个文档。
-
连接峰值:应用程序连接的突然激增使身份验证和会话管理所需的 CPU 资源不堪重负。
-
复杂聚合: Multi-stage 操作(排序、分组、联接)消耗大量的 CPU,尤其是在没有优化索引的大型数据集上。
-
查询效率低下:扫描大型结果集和正则表达式操作会导致 CPU 使用率过高。
-
Write-Heavy 工作负载:频繁的更新和批量插入会给CPU带来文档处理、索引更新和事务日志的压力。
调查-收集指标
亚马逊 DocumentDB 通过亚马逊提供监控。 CloudWatchAmazon DocumentDB 指标可以大致分为集群级别和实例级指标。对于与 CPU、内存和连接相关的资源,请查看实例级别的指标,因为资源消耗是特定于实例的。确定显示 CPU 峰值的实例(主实例或副本),并记下峰值时间。
的 CPU 使用率 CloudWatch 指标CPUUtilization。
诊断-找出根本原因
在确定了 CPU 峰值的实例和时间表之后,接下来是诊断对 CPU 使用率有很大影响的原因。由于可能导致 CPU 峰值的原因有很多,因此让我们先确定是什么原因造成的:
连接:检查 CloudWatch 指标,DatabaseConnections包括DatabaseConnectionsMax,如果连接出现峰值并且与 CPU 峰值时间相吻合,则短时间内的连接激增很可能是 CPU 峰值的原因。
查询:如果不是连接,则可能是查询造成的。如果您已启用性能见解,请转到该实例的性能见解控制台并查看有关该实例的查询。要查看查询的另一件事来自探查器。
解决-修复问题
连接爆发:如果连接爆发是导致 CPU 峰值的原因,请考虑在应用程序中重复使用连接或实现连接池。有关优化高连接的更多信息,请参阅Amazon DocumentDB 的连接问题。
查询分布:如果 CPU 峰值是由主实例上的读取查询引起的,如果您的查询结果最终可以保持一致,请考虑将读取操作重定向到副本实例。
查询优化:如果一个查询或一组查询导致 CPU 峰值,请考虑优化查询,例如在查询未使用索引的情况下添加索引。有关优化查询的更多信息,请参阅查询运行缓慢。
实例扩展:如果经过优化后 CPU 利用率一直很高,请升级到具有更大 CPU 容量的更大实例类别,以有效处理您的工作负载需求。
无服务器:对于导致短期 CPU 峰值的不可预测的工作负载,可以考虑使用。使用 Amazon DocumentDB 无服务器无服务器实例可根据需求自动扩展资源,无需为此类工作负载预置固定实例大小。