

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Performance Insights 概念
<a name="performance-insights-concepts"></a>

**Topics**
+ [平均活动会话数](#performance-insights-concepts-sessions)
+ [Dimensions](#performance-insights-concepts-dimensions)
+ [最大 vCPU](#performance-insights-concepts-maxvcpu)

## 平均活动会话数
<a name="performance-insights-concepts-sessions"></a>

数据库负载（数据库负载）衡量数据库中的活动级别。Performance Insights 的关键指标是 `DB Load`，每秒收集一次。`DBLoad` 指标的单位是 Amazon DocumentDB 实例的*平均活动会话数 (AAS)*。

*活动*会话是已将作业提交到 Amazon DocumentDB 实例并且正在等待响应的连接。例如，如果您将查询提交到 Amazon DocumentDB 实例，则数据库会话在实例处理该查询时将处于活动状态。

为了获取平均活动会话数，Performance Insights 会对同时运行查询的会话数进行采样。平均活动会话数是会话总数除以样本总数。下表显示了正在运行的查询的五个连续示例。


| 示例 | 运行查询的会话数 | AAS | 计算 | 
| --- | --- | --- | --- | 
|  1  |  2  |  2  |  2 个会话/1 个样本  | 
|  2  |  0  |  1  |  2 个会话/2 个样本  | 
|  3  |  4  |  2  |  6 个会话/3 个样本  | 
|  4  |  0  |  1.5  |  6 个会话/4 个样本  | 
|  5  |  4  |  2  |  10 个会话/5 个样本  | 

在上一示例中，1-5 时间间隔的数据库负载为 2 AAS。数据库负载的增加意味着，平均而言数据库上运行的会话更多。

## Dimensions
<a name="performance-insights-concepts-dimensions"></a>

`DB Load` 指标不同于其他时间序列指标，因为您可以将它分为称为维度的子组件。您可以将维度视为 `DB Load` 指标的不同特征的类别。诊断性能问题时，最有用的维度是**等待状态**和**主要查询**。

**等待状态**  
*等待状态* 会导致查询语句等待特定事件发生，然后才能继续运行。例如，查询语句可能会一直等到已锁定的资源得到解锁。通过结合使用 `DB Load` 和等待状态，您可以全面了解会话状态。以下是各种 Amazon DocumentDB 等待状态：


| Amazon DocumentDB 等待状态 | 等待状态描述 | 
| --- | --- | 
|  Latch  |  当会话等待分页缓冲池时，就会出现 Latch 等待状态。当系统频繁处理大型查询、集合扫描或缓冲池太小而无法处理工作集时，频繁分页和退出缓冲池的情况可能会更频繁。  | 
| CPU |  当会话在 CPU 上等待时，就会出现 CPU 等待状态。  | 
|  CollectionLock  |  当会话 CollectionLock 等待获取集合锁定时，就会出现等待状态。当对集合进行 DDL 操作时，就会发生这些事件。  | 
| DocumentLock |  当会话 DocumentLock 等待获取文档锁时，会出现等待状态。对同一文档进行大量并发写入将导致该文档的 DocumentLock等待状态增加。  | 
|  SystemLock  |  当 SystemLock 会话在系统上等待时，就会出现等待状态。当系统上频繁出现长时间运行的查询、长时间运行的事务或高并发时，可能会发生这种情况。  | 
|  IO  |  当会话等待 IO 完成时，就会出现 IO 等待状态。  | 
|  BufferLock  |  当会话 BufferLock 等待获取缓冲区中共享页面的锁时，就会出现等待状态。 BufferLock如果其他进程在请求的页面上持有打开的游标，则等待状态可能会延长。  | 
|  LowMemThrottle  |  由于 Amazon DocumentDB 实例的内存压力过大而导致会话处于 LowMemThrottle 等待状态时，就会出现等待状态。如果此状态持续很长时间，请考虑纵向扩展实例以提供额外的内存。有关更多信息，请参阅[资源管理器](https://docs.aws.amazon.com/documentdb/latest/developerguide/how-it-works.html)。  | 
|  BackgroundActivity  |  当会话正在 BackgroundActivity 等待内部系统进程时，会出现等待状态。  | 
|  其他  |  其他等待状态是内部等待状态。如果此状态持续很长时间，请考虑终止此查询。有关更多信息，请参阅[如何查找并终止长时间运行或受阻的查询？](https://docs.aws.amazon.com/documentdb/latest/developerguide/user_diagnostics.html#user_diagnostics-query_terminating.html)  | 

**主要查询**  
等待状态太显示瓶颈，主要查询则显示哪些查询对数据库负载的贡献最大。例如，当前可能正在数据库上运行许多查询，但单个查询可能会占用 99% 的数据库负载。在这种情况下，高负载可能表示查询存在问题。

## 最大 vCPU
<a name="performance-insights-concepts-maxvcpu"></a>

在控制面板中，**数据库负载**图表会收集、聚合和显示会话信息。要查看活动会话是否超过最大 CPU，请查看它们与**最大 vCPU** 线的关系。**最大 vCPU** 值由 Amazon DocumentDB 实例的 vCPU（虚拟 CPU）内核数决定。

如果数据库负载经常高于**最大 vCPU** 线并且主要等待状态为 CPU，则表示 CPU 过载。在这种情况下，您可能需要限制与实例的连接数，优化具有高 CPU 负载的任何查询，或考虑使用更大的实例类。如果始终有大量实例处于任何等待状态，则表示可能存在要解决的瓶颈或资源争用问题。即使数据库负载未越过**最大 vCPU** 线，也可能会出现此问题。