本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Performance Insights 概念
平均活动会话数
数据库负载(数据库负载)衡量数据库中的活动级别。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。数据库负载的增加意味着,平均而言数据库上运行的会话更多。
尺寸
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 等待状态。如果此状态持续很长时间,请考虑纵向扩展实例以提供额外的内存。有关更多信息,请参阅资源管理器。 |
BackgroundActivity |
当会话等待内部系统进程时,就会出现 BackgroundActivity 等待状态。 |
其他 |
其他等待状态是内部等待状态。如果此状态持续很长时间,请考虑终止此查询。有关更多信息,请参阅如何查找并终止长时间运行或受阻的查询? |
主要查询
等待状态太显示瓶颈,主要查询则显示哪些查询对数据库负载的贡献最大。例如,当前可能正在数据库上运行许多查询,但单个查询可能会占用 99% 的数据库负载。在这种情况下,高负载可能表示查询存在问题。
最大 vCPU
在控制面板中,数据库负载图表会收集、聚合和显示会话信息。要查看活动会话是否超过最大 CPU,请查看它们与最大 vCPU 线的关系。最大 vCPU 值由 Amazon DocumentDB 实例的 vCPU(虚拟 CPU)内核数决定。
如果数据库负载经常高于最大 vCPU 线并且主要等待状态为 CPU,则表示 CPU 过载。在这种情况下,您可能需要限制与实例的连接数,优化具有高 CPU 负载的任何查询,或考虑使用更大的实例类。如果始终有大量实例处于任何等待状态,则表示可能存在要解决的瓶颈或资源争用问题。即使数据库负载未越过最大 vCPU 线,也可能会出现此问题。