跳至內容

如何對 EC2 Linux 執行個體上的 CPU 使用率過高的問題進行疑難排解?

2 分的閱讀內容
0

我想對 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體中 CPU 使用率過高的問題進行疑難排解。

解決方法

由於應用程式層級活動、佈建不足的執行個體或監視器不相符,可能會出現 CPU 使用率高的情況。若要解決 CPU 使用率過高的問題,請檢查環境的竊取時間指標。CPU 竊取時間是指執行個體已準備好使用,但由於底層實體資源已指派到其他地方,因此執行個體無法繼續運作的時間。較高的竊取時間會影響應用程式效能,並導致速度變慢、逾時和行為不一致。

若要解決 Linux 執行個體上的 CPU 使用率過高的問題,請採取下列疑難排解動作。

**注意:**您可能會觀察到 Amazon CloudWatch 指標和執行個體層級工具指標之間的差異。發生這種情況的原因是 CloudWatch 在虛擬機器管理程式層級收集指標,但執行個體工具從客戶作業系統 (OS) 內部進行測量。CloudWatch 也以 1-5 分鐘的間隔進行採樣,執行個體工具可以提供逐秒的資料。時間同步和 CPU 使用率計算方法也可能導致差異。

測量組態的 CPU 竊取時間

若要查看組態的竊取時間,請執行下列命令:

top

輸出範例:

top - 14:23:45 up 7 days, 2:03, 1 user, load average: 0.45, 0.50, 0.45
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.3 us, 2.1 sy, 0.0 ni, 85.6 id, 1.2 wa, 0.0 hi, 0.3 si, 5.5 st
MiB Mem : 3949.2 total, 146.7 free, 1367.8 used, 2434.7 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 2312.8 avail Mem

在輸出中,檢查 st 值以取得 CPU 竊取時間的百分比。在上述範例中,竊取時間佔所有 CPU 時間的 5.5%。最佳做法是將竊取時間保持在 5% 以下。如果您的竊取時間持續高於 10%,請檢查您的執行個體是否有設定錯誤問題。

使用 CloudWatch 監控您的 CPU

使用 CloudWatch 監控執行個體效能,然後檢查 CPUUtilization 指標。您也可以檢查 t2 和 t3 執行個體的 CPUCreditUsageCPUCreditBalance

如果 CloudWatch 指標與您在執行個體中看到的內容之間存在差異,請確認您是否正確設定了 CloudWatch 代理程式。檢查 /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log 中是否有錯誤。

**注意:**預設情況下,CloudWatch 不提供竊取時間指標。而是您必須設定 CloudWatch 代理程式來新增自訂指標。

使用執行個體層級工具來監控執行個體

若要以更使用者友善的介面查看組態的竊取時間,請使用 htop 而不是 top 命令。若要下載 htop,請參閱 GitHub 網站上的 htop-dev/htop 版本

若要查看一段時間內的詳細系統層級資源使用情況 (例如記憶體、分頁、I/O 和 CPU),請執行下列命令:

vmstat

輸出範例:

$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b  swpd      free buff cache  si so bi bo in cs us sy id wa st
0 0    0    150272 97545 2394124   0  0  0  5  1  2 5 2 86  1 6
0 0    0    150272 97545 2394124   0  0  0  0 435 625 4 2  88 0 6

**注意:**若要查看竊取時間,請選取 st 欄位。

若要查看有關資源的歷史資料,請執行以下命令:

sar

輸出範例:

 $ sar -P ALL 1 3
Linux 5.4.0-1045-aws (ip-10-0-1-100) 04/22/2025 _x86_64_ (2 CPU)
4:25:00 CPU %user %nice %system %iowait %steal %idle
14:25:01 all 4.50 0.00 2.00 1.00 5.50 87.00
14:25:01 0 4.00 0.00 2.00 1.00 6.00 87.00
14:25:01 1 5.00 0.00 2.00 1.00 5.00 87.00

**注意:**您可以設定 sar 以定期收集 CPU 指標。如需詳細資訊,請參閱 Red Hat 網站上的 sar 命令

檢查您的執行個體類型

不同的執行個體類型更容易受到竊取時間問題的影響。例如,持續的高 CPU 使用率可能會耗盡 CPU 積分,並限制爆量執行個體類型 (如 t2 和 t3) 的效能。

如果爆量執行個體類型的積分餘額持續較低或為 0,請執行下列其中一項:

最佳化執行個體或應用程式組態

如果特定程序使用高 CPU,則執行下列動作:

  • 調查高 CPU 使用率是否為預期行為。
  • 檢查應用程式日誌中是否存在錯誤或意外行為。
  • 重新啟動應用程式或服務。

如果 CPU 使用率與預期行為一致,但數值仍偏高,請調整應用程式以提高效率。例如,最佳做法是將運算密集型工作負載轉移到不同的執行個體或容器。

管理您的流量和負載模式

如果因流量或負載模式導致高 CPU 使用率反覆發生,請執行下列動作:

相關資訊

如何對因資源過度使用而無法進行狀態檢查的 EC2 Linux 執行個體進行疑難排解?

AWS 官方已更新 9 個月前