Wie behebe ich eine hohe CPU-Auslastung auf einer EC2-Linux-Instance?
Ich möchte eine hohe CPU-Auslastung in meiner Amazon Elastic Compute Cloud (Amazon EC2) Linux-Instance beheben.
Lösung
Eine hohe CPU-Auslastung kann aufgrund von Aktivitäten auf Anwendungsebene, unzureichend bereitgestellten Instances oder nicht übereinstimmenden Monitoren auftreten. Um Probleme bei hoher CPU-Auslastung zu beheben, überprüfe die Steal-Time-Metriken der Umgebung. CPU-Steal-Time ist die Zeit, zu der eine Instance einsatzbereit ist, die Instance jedoch nicht weitermachen kann, da die zugrunde liegenden physischen Ressourcen an anderer Stelle zugewiesen sind. Eine hohe Steal-Time wirkt sich auf die Anwendungsleistung aus und führt zu Verlangsamungen, Timeouts und inkonsistentem Verhalten.
Führe die folgenden Maßnahmen zur Fehlerbehebung durch, um eine hohe CPU-Auslastung auf der Linux-Instance zu beheben.
Hinweis: Möglicherweise stelle Unterschiede zwischen Amazon CloudWatch-Metriken und Tool-Metriken auf Instance-Ebene fest. Dies liegt daran, dass CloudWatch Metriken auf Hypervisor-Ebene erfasst, Instance-Tools jedoch Messungen innerhalb des Gastbetriebssystems (OS) durchführen. CloudWatch führt auch Stichproben in Intervallen von 1 bis 5 Minuten durch, in denen Instance-Tools sekundengenaue Daten bereitstellen können. Die Methoden zur Zeitsynchronisierung und Berechnung der CPU-Auslastung können ebenfalls zu Diskrepanzen führen.
Die CPU-Steal-Time der Konfiguration messen
Führe den folgenden Befehl aus, um die Steal-Time der Konfiguration anzuzeigen:
top
Beispielausgabe:
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
Überprüfe in der Ausgabe den Wert st, um den Prozentsatz der CPU-Steal-Time zu ermitteln. Im vorherigen Beispiel macht Steal-Time 5,5 % der gesamten CPU-Zeit aus. Es hat sich bewährt, die Steal-Time unter 5 % zu halten. Wenn die Steal-Time konstant über 10 % liegt, überprüfe die Instance auf Probleme mit der Fehlkonfiguration.
CloudWatch verwenden, um die CPU zu überwachen
Verwende CloudWatch, um die Leistung der Instance zu überwachen und überprüfe dann die CPUUtilization-Metrik. Du kannst auch CPUCreditUsage und CPUCreditBalance für t2- und t3-Instances überprüfen.
Wenn es eine Diskrepanz zwischen den CloudWatch-Metriken und dem, was du in der Instance siehst, gibt, überprüfe, ob du den CloudWatch-Agenten richtig konfiguriert hast. Überprüfe /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log auf Fehler.
Hinweis: CloudWatch bietet standardmäßig keine Steal-Time-Metriken. Stattdessen musst du den CloudWatch-Agenten so konfigurieren, dass benutzerdefinierte Metriken hinzugefügt werden.
Tools auf Instance-Ebene verwenden, um die Instance zu überwachen
Für eine benutzerfreundlichere Oberfläche zum Anzeigen der Steal-Time der Konfiguration verwende htop anstelle des Befehls top. Um htop herunterzuladen, siehe htop-dev/htop Releases auf der GitHub-Website.
Führe den folgenden Befehl aus, um die detaillierte Ressourcenauslastung auf Systemebene wie Speicher, Auslagerung, I/O und CPU im Zeitverlauf anzuzeigen:
vmstat
Beispielausgabe:
$ 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
Hinweis: Um die Steal-Time anzuzeigen, kreuze die st-Spalte an.
Führe den folgenden Befehl aus, um Stammdaten zu den Ressourcen anzuzeigen:
sar
Beispielausgabe:
$ 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
Hinweis: Du kannst sar so konfigurieren, dass CPU-Metriken in regelmäßigen Abständen erfasst werden. Weitere Informationen findest du unter Der Befehl „sar“ auf der Red Hat-Website.
Instance-Typ überprüfen
Verschiedene Instance-Typen sind anfälliger für Steal-Time-Probleme. Beispielsweise kann eine anhaltend hohe CPU-Auslastung das CPU-Guthaben erschöpfen und die Leistung von Burstable-Instance-Typen wie t2 und t3 drosseln.
Wenn das Guthaben des Burstable-Instance-Typs konstant niedrig ist oder bei 0 liegt, ergreife eine der folgenden Maßnahmen:
- Ändere den Instance-Typ auf eine größere Größe.
- Ändere den Instance-Typ in eine Instance, die nicht burstable-fähig ist, z. B. eine M-, C- oder R-Serie.
Instance- oder Anwendungskonfiguration optimieren
Wenn ein bestimmter Prozess eine hohe CPU-Auslastung hat, gehe wie folgt vor:
- Untersuche, ob die hohe CPU-Auslastung ein erwartetes Verhalten ist.
- Überprüfe die Anwendungsprotokolle auf Fehler oder unerwartetes Verhalten.
- Starte die Anwendung oder den Service neu.
Wenn die CPU-Auslastung dem erwarteten Verhalten entspricht, aber immer noch zu hoch ist, optimiere die Anwendung, um die Effizienz zu verbessern. Es ist beispielsweise eine bewährte Methode, rechenintensive Workloads auf eine andere Instance oder einen anderen Container zu verschieben.
Datenverkehr und deine Load-Muster verwalten
Wenn eine hohe CPU-Auslastung aufgrund von Datenverkehrs- oder Load-Muster ein wiederkehrendes Problem ist, ergreife die folgenden Maßnahmen:
- Richte Amazon EC2 Auto Scaling-Gruppen ein, um die Skalierung automatisch zu verwalten.
- Verwende Elastic Load Balancing (ELB), um den Datenverkehr zu verteilen.
- Verwende Container und serverlose Anwendungen, um Workloads in kleinere Services aufzuteilen.
Ähnliche Informationen
- Themen
- Compute
- Tags
- LinuxAmazon EC2
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 6 Monaten
AWS OFFICIALAktualisiert vor 2 Jahren