本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
cpu
當執行緒在 中作用中CPU或正在等待 時,會發生cpu
等待事件CPU。
支援的引擎版本
下列引擎版本支援這個等待事件資訊:
-
Aurora MySQL 第 2 版和第 3 版
Context
對於每個 vCPU,連線都可以在此 上執行工作CPU。在某些情況下,準備執行的作用中連線數目會高於 的數目vCPUs。此不平衡會導致連線等待CPU資源。如果作用中連線的數量持續高於 的數量vCPUs,則您的執行個體會遇到CPU爭用。爭用會導致 cpu
等待事件發生。
注意
的績效詳情指標CPU為 DBLoadCPU
。的值DBLoadCPU
可能與 CloudWatch 指標 的值不同CPUUtilization
。後者指標會從資料庫執行個體 HyperVisor 的 收集。
Performance Insights 作業系統指標提供有關CPU使用率的詳細資訊。例如,您可以顯示下列指標:
-
os.cpuUtilization.nice.avg
-
os.cpuUtilization.total.avg
-
os.cpuUtilization.wait.avg
-
os.cpuUtilization.idle.avg
Performance Insights 會將資料庫引擎的CPU用量報告為 os.cpuUtilization.nice.avg
。
等待時間增加的可能原因
此事件比平時更常發生時,可能表示有效能問題,典型原因包括:
-
分析查詢
-
高度並行交易
-
長時間執行的交易
-
連線數量突然增加,稱為「登入風暴」
-
內容切換變多
動作
如果 cpu
等待事件在資料庫活動中佔多數,則不見得表示有效能問題。效能降低時才需要回應此事件。
根據CPU使用率增加的原因,請考慮下列策略:
-
增加主機的CPU容量。這種方法通常只是應急而已。
-
識別潛在最佳化的熱門查詢。
-
如適用,請將一些唯讀工作負載重新導向至讀取器節點
識別造成問題的工作階段或查詢
若要尋找工作階段和查詢,請查看績效詳情中的最高SQL資料表,查看具有最高CPU負載的SQL陳述式。如需詳細資訊,請參閱使用績效詳情儀表板來分析指標。
一般而言,一或兩個SQL陳述式會耗用大部分CPU的週期。將精力集中在這些陳述式上。假設您的資料庫執行個體有 2 個資料庫負載 vCPUs 為 3.1 平均作用中工作階段 (AAS),全部處於 CPU 狀態。在這種情況下,您的執行個體已CPU繫結。請考慮下列策略:
-
使用更多 升級至更大的執行個體類別vCPUs。
-
調校您的查詢以降低CPU負載。
在此範例中,最熱門SQL查詢的資料庫負載為 1.5 AAS,全部都處於 CPU 狀態。另一個SQL陳述式在 CPU 狀態的負載為 0.1。在此範例中,如果您停止最低負載SQL陳述式,則不會大幅減少資料庫負載。不過,如果您將兩個高負載查詢最佳化為兩倍的效率,則可以消除CPU瓶頸。如果您將CPU負載減少 1.5% AAS達 50%,則每個陳述式AAS的 會減少為 0.75。在 上花費的總資料庫負載現在CPU為 1.6 AAS。此值低於 2.0 的最大 vCPU 行。
如需使用績效詳情進行故障診斷的實用概觀,請參閱部落格文章 使用績效詳情分析 Amazon Aurora MySQL Workloads
分析和最佳化高CPU工作負載
識別查詢或查詢增加CPU用量後,您可以最佳化它們或結束連線。下列範例示範如何結束連線。
CALL mysql.rds_kill(
processID
);
如需詳細資訊,請參閱mysql.rds_kill。
如果您結束工作階段,動作可能會觸發長時間回復。
遵循最佳化查詢的指導方針
若要最佳化查詢,請考慮以下指導方針:
-
執行
EXPLAIN
陳述式。這個命令會顯示執行查詢所涉及的個別步驟。如需詳細資訊,請參閱 MySQL 文件中的使用 最佳化查詢EXPLAIN
。 -
執行
SHOW PROFILE
陳述式。使用此陳述式可檢閱設定檔詳細資訊,此詳細資訊可以指出在目前工作階段期間執行之陳述式的資源使用情形。如需詳細資訊,請參閱我的SQL文件中的SHOWPROFILE陳述
式。 -
執行
ANALYZE TABLE
陳述式。使用此陳述式重新整理高CPU耗用查詢存取資料表的索引統計資料。藉由分析敘述句,您可以協助最佳化工具選擇適當的執行計劃。如需詳細資訊,請參閱我的SQL文件中的ANALYZETABLE陳述
式。
遵循改善CPU用量的指導方針
若要改善資料庫執行個體中的CPU用量,請遵循下列準則:
-
確保所有查詢都是使用適當的索引。
-
了解您是否可以使用 Aurora 平行查詢。您可以使用此技術,透過下推 子
WHERE
句的函數處理、資料列篩選和資料欄投影來減少頭部節點上的CPU用量。 -
了解每秒的SQL執行次數是否符合預期的閾值。
-
了解索引維護或新的索引建立是否佔用生產工作負載所需的CPU週期。將維護活動排定在尖峰活動時間之外。
-
了解您是否可以使用分割來協助減少查詢資料集。如需詳細資訊,請參閱部落格文章如何規劃和最佳化 Amazon Aurora 與我的SQL整合工作負載相容性
。
檢查連線風暴
如果DBLoadCPU
指標不是非常高,但CPUUtilization
指標很高,高CPU使用率的原因就位於資料庫引擎之外。典型範例是連線風暴。
檢查下列條件是否為 true:
-
Performance Insights
CPUUtilization
指標和 Amazon CloudWatchDatabaseConnections
指標都有所增加。 -
中的執行緒數量CPU大於 的數量vCPUs。
如果上述條件為 true,請考慮減少資料庫連線數量。例如,您可以使用 RDS Proxy 等連線集區。若要了解有效連線管理和擴展的最佳實務,請參閱白皮書 Amazon Aurora MySQL DBA Manual for Connection Management