Direkt zum Inhalt

Wie behebe ich Fehler bei einer EC2-Linux-Instance, die aufgrund einer übermäßigen Ressourcennutzung eine Statusüberprüfung nicht besteht?

Lesedauer: 8 Minute
0

Meine Amazon Elastic Compute Cloud (Amazon EC2) Linux-Instance hat die Instance-Statusüberprüfung nicht bestanden, da für sie keine Ressourcen mehr verfügbar sind.

Kurzbeschreibung

Die Instance kann ihre Status-Integritätsprüfung aufgrund der Ressourcennutzung aus den folgenden Gründen nicht bestehen:

  • Die CPU-Auslastung der Instance ist 100 % und die Instance hatte nicht mehr genug Rechenkapazität übrig, um den Kernel ausführen zu können.
  • Das Root-Gerät ist zu 100 % voll und verhindert, dass andere Prozesse abgeschlossen oder gestartet werden.
  • Die Prozesse, die auf der Instance ausgeführt werden, haben ihren gesamten Speicher genutzt und erlauben nicht, dass der Kernel ausgeführt wird.

Lösung

Wichtig: Bevor du die Instance anhältst und startest, gehe wie folgt vor.

Stoppe und starte die Instance, um den Kernel zu zwingen, laufende Prozesse zu beenden. Dies ist eine vorübergehende Lösung, um Ressourcen an das Betriebssystem (OS) zurückzugeben. Um die Probleme mit der übermäßigen Nutzung zu beheben, ergreife die folgenden Maßnahmen, um die Ursache zu beheben.

Hinweis: Wenn du eine Instance anhältst und startest, ändert sich die öffentliche IP-Adresse der Instance. Es empfiehlt sich, beim Weiterleiten von externem Datenverkehr an die Instance eine Elastic-IP-Adresse anstelle einer öffentlichen IP-Adresse zu verwenden.

Die CloudWatch-CPU-Metriken der Instance überprüfen

Prüfe, ob die Amazon CloudWatch-Metrik CPUUtilization der Instance bei oder nahe 100 % liegt. Ist dies der Fall, starte die Instance neu, um die Instance wieder in einen fehlerfreien Zustand zu versetzen. Wenn das Problem nach dem Neustart weiterhin auftritt, sind die CPU-Anforderungen der Instance höher als die, die der Instance-Typ bietet.

Um dieses Problem zu beheben, ändere den Instance-Typ in einen mit höherer CPU-Verfügbarkeit.

Wenn es sich bei der Instance um eine Instance mit hoher Leistung wie T2, T3 oder T3a handelt, überprüfe deren CPUCreditBalance-Metrik. Wenn das Guthaben nahe bei Null liegt, drosselt Amazon EC2 die Instance-CPU. Wenn du die Guthabenspezifikation der Instance auf Standard setzen, ändere die Spezifikation in Unbegrenzt.

Das Systemprotokoll der Instance auf Fehler überprüfen

Überprüfe das Systemprotokoll auf Fehler wie „No space left on device“ oder „Out of memory“.

Den Fehler „No space left on device“ beheben

Wenn das Dateisystem, das einen aufgelisteten Ordner enthält, voll ist, erhältst du eine Fehlermeldung, die dem folgenden Beispiel ähnelt:

„OSError: [Error 28] No space left on device '/var/lib/'“

Im vorherigen Beispiel ist /var/lib voll.

Um Speicherplatz freizugeben, verwende die serielle EC2-Konsole um eine Verbindung zu unterstützten Nitro-basierten Instance-Typen und unterstützten Bare-Metal-Instances herzustellen. Lösche dann die nicht benötigten Dateien. Du benötigst keine funktionierende Verbindung, um eine Verbindung zur Instance herzustellen, wenn du die serielle EC2-Konsole verwendest.

Wenn du die serielle EC2-Konsole noch nicht verwendet hast, stelle sicher, dass du die Voraussetzungen erfüllst. Wenn die Instance nicht erreichbar ist und du den Zugriff auf die serielle Konsole noch nicht konfiguriert hast, kannst du die serielle EC2-Konsole nicht verwenden.

Wenn du die serielle EC2-Konsole nicht verwenden kannst, führe die folgenden Schritte aus, um eine Rettungs-Instance zu starten und nicht benötigte Dateien zu entfernen:

  1. Starte eine neue Rettungs-Instance in der Virtual Private Cloud (VPC). Verwende dasselbe Amazon Machine Image (AMI) und dieselbe Availability Zone wie die Instance, die ihre Statusüberprüfung nicht bestanden hat.
    Hinweis: Du kannst auch eine vorhandene Instance verwenden, die sich in derselben Availability Zone befindet und dasselbe AMI wie die ursprüngliche Instance verwendet.

  2. Beende die ursprüngliche Instance.

  3. Trenne das Root-Volume von Amazon Elastic Block Store (Amazon EBS), z. B. /dev/xvda oder /dev/sda1, von der ursprünglichen Instance. Notiere dir den Gerätenamen des Root-Volumes.

  4. Schließe das Volume als sekundäres Gerät /dev/sdf an die Rettungs-Instance an.

  5. Verwende SSH, um eine Verbindung zu der Rettungs-Instance herzustellen.

  6. Um ein Bereitstellungspunkt-Verzeichnis für das Volume zu erstellen, das du an die Rettungs-Instance angefügt hast, führe den folgenden Befehl aus:

    sudo mkdir /rescue

    Hinweis: Ersetze /rescue durch den Namen des Bereitstellungspunkt-Verzeichnisses.

  7. Führe als Root-Benutzer die folgenden Befehle aus, um den richtigen Gerätenamen zu ermitteln:

    sudo -i
    # lsblk

    Hinweis: Das Gerät, das an die Rettungs-Instance angeschlossen ist, hat möglicherweise einen anderen Gerätenamen.

  8. Führe den folgenden Befehl aus, um das Volume in das neue Verzeichnis einzubinden:

    sudo mount /dev/xvdf1 /rescue

    Hinweis: Ersetze dev/xvdf1 durch den Gerätenamen des Root-Volumes und /rescue durch den Namen des Bereitstellungspunkt-Verzeichnisses. Wenn du beim Ausführen des vorherigen Befehls eine Fehlermeldung erhältst findest du weitere Informationen unter Warum kann ich mein Amazon EBS-Volume nicht bereitstellen?

  9. Führe den folgenden Befehl aus, um die Dateien zu identifizieren, die den meisten Speicherplatz beanspruchen:

    du -shcm /rescue/var/lib/* |sort -n
  10. Lösche große Dateien, die du nicht benötigst, um Speicherplatz freizugeben.

  11. Führe den folgenden Befehl aus, um das sekundäre Gerät von der Rettungs-Instance zu trennen:

sudo umount /rescue

Hinweis: Ersetze /rescue durch den Namen des Bereitstellungspunkt-Verzeichnisses.
Wenn der Unmount-Vorgang fehlschlägt, beende die Rettungs-Instance oder starte sie neu. Dann führe den vorherigen Befehl erneut aus. Trenne das sekundäre Volume von der Rettungs-Instance. Hänge das Volume als Root-Volume /dev/xvda oder /dev/sda1 an die ursprüngliche Instance an. Starte die Instance und vergewissere dich, dass die Instance reagiert.

Wenn du immer noch nicht genug Speicherplatz zur Verfügung hast, führe die folgenden Schritte aus, um die Größe des EBS-Root-Volumes zu ändern:

  1. Fordere eine Änderung der EBS-Volume-Größe an.
  2. Folge den Schritten 1–8 des vorherigen Abschnitts, um eine Rettungs-Instance zu starten.
  3. Erweitere das Linux-Dateisystem.

Den Fehler „Out of memory“ beheben

Wenn der Instance nicht genügend Arbeitsspeicher zur Verfügung steht, erhältst du die folgende Fehlermeldung:

„Out of memory: kill process“

Wenn der Instance nicht genügend Arbeitsspeicher zur Verfügung steht, hat der Kernel nicht genug Arbeitsspeicher, um ausgeführt zu werden und Amazon EC2 beendet andere Prozesse, um Speicherplatz freizugeben. Schritte zur Problembehandlung findest du unter Nicht genügend Arbeitsspeicher: Prozess beenden.

Um die Speicherprotokolle zu überprüfen, folge den Schritten 1–8 des vorherigen Abschnitts, um eine Rettungs-Instance zu starten. Führe dann je nach Linux-Distribution den folgenden Befehl aus, um die Protokolle nach Meldungen zu durchsuchen, bei denen nicht genügend Arbeitsspeicher zur Verfügung steht:

Amazon Linux 2 (AL2):

sudo grep -i -r 'out of memory' /var/log/

Amazon Linux 2023 (AL2023):

sudo journalctl -p err | grep -i "out of memory"

-oder-

sudo dmesg | grep -i "out of memory"

Fehler bei der Seitenzuweisung beheben

Du erhältst den Fehler „page allocation failure“, wenn der Kernel-Speicherzuweisungsgenerator die Zuweisungsanfrage nicht erfüllt.

Um dieses Problem zu beheben, empfiehlt es sich, ein Upgrade der Instance auf einen größeren Instance-Typ durchzuführen. Oder verwende für Instances, die temporäre Instance-Speicher-Volumes verwenden, eine Swap-Datei oder Festplattenpartition, um der Instance Swap-Speicher hinzuzufügen und den Speicherdruck zu verringern.

Hinweis: Die Instance verwendet den Swap-Speicherplatz, wenn der Arbeitsspeicher voll ist. Du kannst Swap-Speicherplatz für Instances verwenden, die über wenig Arbeitsspeicher verfügen. Swap-Speicherplatz ist jedoch kein Ersatz für mehr Arbeitsspeicher. Da sich der Swap-Speicherplatz auf der Festplatte der Instance befindet, ist die Leistung im Vergleich zum Arbeistspeicher langsamer. Für mehr oder schnelleren Arbeitsspeicher musst du die Instance-Größe erhöhen.

Verwende atop, um Ressourcenprobleme zu untersuchen und zu verhindern

Verwende das Überwachungstool atop, um Muster und Prozesse zur Ressourcennutzung zu identifizieren, die Probleme verursachen könnten, bevor sie zu Systemausfällen führen. Das Tool atop hilft dir dabei, das System kontinuierlich zu überwachen und Fehler zu beheben.

Hinweis: Das Tool atop protokolliert Daten erst, nachdem du es installiert hast. Du kannst keine historischen Leistungsdaten abrufen, die vor der Installation des atop-Tool erstellt wurden.

Verwende das Tool atop, um die folgenden Ressourcen zu überprüfen:

  • Überprüfe die historischen Daten in /var/log/atop/, um das System und die Prozesse zu analysieren, als der Fehler aufgetreten ist.
  • Suche nach Prozessen, die eine große Menge an Ressourcen verbrauchen.
  • Überprüfe die Speicher-, CPU- und Festplattennutzungssmuster, die zu dem Ausfall geführt haben.

Ähnliche Informationen

Wie behebe ich Fehler bei der Statusüberprüfung für meine EC2-Linux-Instance?

Welche Schritte muss ich unternehmen, bevor ich den Instance-Typ meiner EC2-Linux-Instance ändere?

AWS OFFICIALAktualisiert vor 6 Monaten