Warum reagiert meine EC2-Linux-Instance aufgrund einer Überlastung von Ressourcen nicht mehr?

Letzte Aktualisierung: 25.10.2021

Meine Linux-Instance von Amazon Elastic Compute Cloud (Amazon EC2) reagiert aufgrund einer Überlastung von Ressourcen nicht mehr. Wie kann ich das verhindern?

Kurzbeschreibung

Es gibt mehrere häufige Ursachen, warum eine Instance nicht mehr reagiert:

Speicher: EC2-Instances haben standardmäßig keinen Swap-Speicherplatz zugewiesen. Wenn der Speicher knapp wird, kann das den Linux-Out-Of-Memory (OOM)-Manager aufrufen. Der OOM-Manager beendet Prozesse wie eine Datenbank, einen Webserver oder den SSH-Dienst.

Vernetzung: Ohne Netzwerk kann Ihr System ARP-Anfragen von Statusprüfungen nicht beantworten. In diesem Fall kommuniziert Ihre Instance nicht mit anderen Hosts.

Amazon Elastic Block Store (Amazon EBS): Ohne Festplatten-E/A bleiben Lese- oder Schreibanweisungen hängen. Zum Beispiel die Erstellung temporärer Dateien, das Lesen aus Systembibliotheken oder Datenbanken.

CPU: Alle vorhergehenden Aufgaben benötigen CPU-Zeit, um zu funktionieren. Eine 100%-ige CPU-Auslastung über einen längeren Zeitraum hindert den Kernel daran, normale Betriebssystem-Operationen auszuführen.

Diese Probleme können sich auch zu einem Schneeballeffekt akkumulieren. Beispielsweise läuft Ihnen der Speicher aus und der OOM-Manager beendet einen wichtigen Prozess. Jetzt startet ein zweiter Prozess, der auf dem ersten gestoppten Prozess beruht, eine viel höhere Anzahl von CPU-Zyklen. Wenn diese Aufgabe festplattenbezogen ist, kann dieser Zyklus auch das EBS-Volumen erschöpfen. Außerdem kann das Problem auf eine andere Instance übertragen werden, die eine Kommunikation von der nicht reagierenden Instance erwartet.

Auflösung

Wenn Ihr System aufgrund einer Überlastung von Ressourcen häufig nicht mehr reagiert, gehen Sie wie folgt vor:

Sammeln Sie Informationen

  1. Verwenden Sie ein Überwachungstool wie Amazon CloudWatch, um Trends und Muster einer hohen Ressourcenauslastung zu beobachten.
  2. Wenn Sie über mehrere Dienste verfügen und nicht sicher sind, welcher Ressourcen übermäßig nutzt, installieren Sie ein Dienstprogramm wie atop.
  3. Überprüfen Sie die Protokolle Ihrer Anwendung und Ihres Betriebssystems. Diese Protokolle befinden sich normalerweise in /var/log/.
  4. Überprüfen Sie den Verlauf der Befehle, um festzustellen, ob menschliches Versagen vorliegt. Der Befehlsverlauf befindet sich normalerweise in der Datei ~/.bash_history.
  5. Überprüfen Sie Cronjobs, indem Sie den Befehl crontab -l ausführen.

Handeln Sie basierend auf den erfassten Daten

Verhindern Sie zukünftige Überauslastung

  1. Erstellen Sie vor der Bereitstellung einer neuen Anwendung in der Produktion eine Testumgebung und einen Benchmark, um die erforderliche Rechenleistung, den Arbeitsspeicher, das EBS und das Netzwerk zu ermitteln.
  2. Implementieren Sie gemäß Ihren Benchmarks und bauen Sie gleichzeitig auf Fehlertoleranz. Weitere Informationen finden Sie unter den folgenden Links:
    Entwerfen von Interaktionen in einem verteilten System, um Ausfälle zu vermeiden
    Einrichten einer automatisch skalierten Anwendung mit Lastausgleich
  3. Überwachen Sie Ihre Instances weiter und erstellen Sie Alarme für bestimmte Schwellenwerte für die Ressourcennutzung.

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?