

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 高 CPU 使用率
<a name="performance-high-cpu-utilization"></a>

高 CPU 使用率是您在使用 Amazon DocumentDB 時可能遇到的問題之一。本節提供解決問題的洞見。

## 識別 - 找出問題
<a name="high-cpu-identification"></a>

Amazon DocumentDB 執行個體上的高 CPU 使用率會提高所有資料庫操作的延遲，導致應用程式速度變慢。當 Amazon DocumentDB CPU 用量超過最佳層級時，查詢執行時間會增加、建立連線需要更長的時間，以及應用程式回應能力降低。主要執行個體上的 CPU 峰值會減慢寫入操作，而複本上的峰值會導致讀取操作的延遲較高。

Amazon DocumentDB 中高 CPU 使用率的一些常見原因可能是：
+ **集合掃描**：沒有適當索引的查詢會強制完整集合掃描，耗用過多 CPU 來檢查每個文件。
+ **連線峰值**：應用程式連線突然激增，導致身分驗證和工作階段管理所需的 CPU 資源龐大。
+ **複雜彙總**：多階段操作 （排序、分組、聯結） 會耗用大量 CPU，尤其是在沒有最佳化索引的大型資料集。
+ **低效率查詢**：掃描大型結果集和 regex 操作會產生高 CPU 使用率。
+ **寫入密集型工作負載**：頻繁更新和大量插入會對 CPU 造成壓力，包括文件處理、索引更新和交易記錄。

## 調查 - 收集指標
<a name="high-cpu-investigate"></a>

Amazon DocumentDB 透過 Amazon CloudWatch 提供監控。Amazon DocumentDB 指標可以廣泛分類為叢集層級和執行個體層級指標。對於與 CPU、記憶體和連線相關的資源，請查看執行個體層級指標，因為資源消耗是執行個體特有的。識別顯示 CPU 峰值的執行個體 （主要或複本），並記下峰值的時間。

適用於 的 CPU 使用率的 CloudWatch 指標`CPUUtilization`。

## 診斷 - 尋找根本原因
<a name="high-cpu-diagnose"></a>

識別 CPU 峰值的執行個體和時間軸之後，接下來是診斷對 CPU 用量造成很大影響的原因。由於有多種原因可能導致 CPU 峰值，因此 讓我們找出造成 CPU 峰值的原因：

**連線**：檢查 CloudWatch 指標，包括 `DatabaseConnections`和 `DatabaseConnectionsMax`，如果連線中有峰值，並且與 CPU 峰值時間一致，則短時間內連線激增可能是 CPU 峰值的原因。

**查詢**：如果不是連線，則查詢可能是原因。如果您已啟用效能洞察，請前往執行個體的績效洞察主控台，並查看執行個體上的查詢。另一個要查看查詢的事項是來自分析器。

## 解決 - 修正問題
<a name="high-cpu-resolve"></a>

**連線暴**增：如果連線暴增是 CPU 峰值的原因，請考慮在應用程式中重複使用連線或實作連線集區。如需最佳化高連線的詳細資訊，請參閱 [Amazon DocumentDB 的連線問題](performance-connection-issues.md)。

**查詢分佈**：如果 CPU 峰值是由主要執行個體上的讀取查詢造成，如果您的查詢結果最終可以一致，請考慮將讀取操作重新導向至複本執行個體。

**查詢最佳化**：如果查詢或一組查詢導致 CPU 峰值，請考慮最佳化查詢，例如，如果查詢未使用索引，則新增索引。如需最佳化查詢的詳細資訊，請參閱 [查詢執行緩慢](performance-slow-queries.md)。

**執行個體擴展**：如果在最佳化工作後 CPU 使用率持續很高，請升級至具有更多 CPU 容量的大型執行個體類別，以有效地處理您的工作負載需求。

**無伺服器**：對於造成短期 CPU 尖峰的不可預測工作負載，請考慮使用 [使用 Amazon DocumentDB 無伺服器](docdb-serverless.md)。無伺服器執行個體會根據需求自動擴展資源，無需為此類工作負載佈建固定執行個體大小。