如何排查并解决 DocumentDB 实例上的高 CPU 使用率的问题?

上次更新时间:2020 年 6 月 17 日

我遇到 Amazon DocumentDB(与 MongoDB 兼容)实例上的高 CPU 使用率的问题。如何解决高 CPU 使用率?

简短描述

Amazon DocumentDB 实例上的 CPU 使用率可能会由于以下原因而增加:

  • 用户启动的繁重的工作负载
  • 非高效查询
  • 在集群中超负荷使用写入器或特定的数据库实例,而不是平衡集群内的负载。

使用以下资源来排查 CPU 性能问题:

解决方法

使用 replicaSet 拆分工作负载

如果您的 DocumentDB 集群具有多个数据库实例,请检查写入器 CPU 是否较高,并且读取器处于闲置状态。这意味着写入器过载。

为解决此问题,请使用 replicaSet 拆分工作负载,或使用多个连接池将读取查询路由到读取器数据库实例。

为您的连接指定 readPreference

以副本集连接时,您可以为连接指定 readPreference。如果您指定 secondaryPreferred 的读取首选项,客户端会将读取查询路由到您的副本,将写入查询路由到您的主数据库实例。以下示例显示了 Python 中的连接字符串:

## Create a MongoDB client, open a connection to Amazon DocumentDB as a
##   replica set and specify the read preference as secondary preferred

注意:只读副本的读取为最终一致性

将一个或多个读取器实例添加到集群

如果您的 DocumentDB 集群具有单一数据库实例(仅限写入器),将一个或多个读取器数据库实例添加到集群。然后,使用 readPreference=secondaryPreferred 高效处理负载。

使用 Profiler 确定慢速查询

如果负载在所有副本之间均匀分布,请使用 profiler 确定一段时间的慢速查询。

扩展您的数据库实例的实例类

您还可以扩展 DocumentDB 集群中数据库实例的的实例类来处理工作负载。

注意:扩展实例类会增加成本。 请参阅 DocumentDB 定价以了解更多信息。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?