Warum ist mein Amazon ECS-Service nicht stabil?
Mein Amazon Elastic Container Service (Amazon ECS)-Service startet selbständig regelmäßig neu. Ich möchte, dass mein Amazon ECS-Service stabil oder beständig ist.
Kurzbeschreibung
Der Amazon ECS-Service kann aus einem der folgenden Gründe instabil sein:
- Container-Zustandsprüfungen schlagen fehl.
- Die Zustandsprüfungen von Elastic Load Balancing (ELB) schlagen fehl.
- Eine Amazon ECS-Aufgabe wird mit einem Beendencode ungleich Null beendet.
- Eine Container-Instance erfüllt die Amazon ECS-Aufgabenanforderungen nicht.
- Eine Container-Instance wird unerwartet beendet.
- Amazon ECS-Aufgaben im Service können nicht gestartet werden.
Lösung
Verwende Amazon ECS-Ereignisse auf der Amazon ECS-Konsole, um zu überprüfen, warum der Service instabil ist.
Container-Zustandsprüfungen schlagen fehl
Bevor du die Anwendung auf Amazon ECS bereitstellst, stelle mithilfe von Zustandsprüfungen sicher, dass der Container erwartungsgemäß funktioniert. Wenn der Amazon ECS-Service plötzlich die Container-Zustandsprüfungen nicht besteht, überprüfe die Anwendungsprotokolle. Wenn die Anwendung den awslogs-Treiber verwendet, überprüfe die Protokolle in Amazon CloudWatch.
Hinweis: Zustandsprüfungsparameter, die du in einer Container-Definition angibst, überschreiben Docker-Zustandsprüfungen, die im Container-Image vorhanden sind.
ELB-Zustandsprüfungen schlagen fehl
Load Balancer führen regelmäßig Container-Zustandsprüfungen auf jedem Server durch, um zu ermitteln, zu welchen Servern der Datenverkehr sicher weitergeleitet werden kann. Wenn ein Amazon ECS-Service aufgrund von ELB-Zustandsprüfungen ausfällt, liegt möglicherweise ein Kommunikationsproblem zwischen dem Load Balancer und dem Service vor.
Gehe wie folgt vor, um zu überprüfen, ob du die Load Balancer und den Amazon ECS-Service richtig konfiguriert hast:
-
Stelle sicher, dass die Container-Sicherheitsgruppe den Datenverkehr vom Load Balancer zulässt.
-
Führe den folgenden Befehl im Container aus, um sicherzustellen, dass die Anwendung am richtigen Port lauscht:
netstat -tulpn | grep LISTEN
-
Vergewissere dich, dass der Pfad zur Zustandsprüfung korrekt ist.
-
Überprüfe die Anwendungsprotokolle auf Fehler.
-
Führe einen curl-Befehl für den Pfad zur Zustandsprüfung in Amazon Elastic Compute Cloud (Amazon EC2) aus. Oder aktiviere ECS Exec auf AWS Fargate und führe einen curl-Befehl für die Zustandsprüfung im Container aus, um den Antwortcode zu bestätigen.
-
Überwache die CPU- und Speichermetriken des Service, da eine hohe CPU-Auslastung dazu führen kann, dass die Anwendung nicht reagiert und die ELB-Zustandsprüfungen fehlschlagen.
-
Stelle die minimale Toleranzzeit für die Zustandsprüfung so ein, dass sie 1,5- bis 2,0-mal länger ist als die Zeit, die die Anwendung benötigt, um den Status AKTIV zu erreichen.
Eine Amazon ECS-Aufgabe wird mit einem Beendencode ungleich Null beendet
Wenn es ein Problem in einem Container gibt, führt Amazon ECS-Aufgaben innerhalb der Servicebeendigung mit einem Beendencode ungleich Null aus. Alle Aufgaben müssen mindestens einen essenziellen Container haben. Wenn der essenzielle Container aus irgendeinem Grund beendet wird, schlägt die gesamte Aufgabe fehl, und der Amazon ECS-Service wird instabil.
Die folgenden Beendencodes sind Gründe, warum die Amazon ECS-Aufgabe möglicherweise fehlschlägt:
- Du erhältst den Beendencode 1, wenn ein Anwendungsfehler vorliegt. Weitere Informationen zum Fehler findest du in den Anwendungsprotokollen.
- Du erhältst den Beendencode 137, wenn die Aufgabe für den Container zum Beenden (SIGKILL) erzwungen wurde oder ein Out-of-Memory (OOM)-Fehler vorliegt. Um zu überprüfen, ob bei dir ein OOM-Problem vorliegt, überprüfe deine CloudWatch-Metriken.
- Du erhältst den Beendencode 139, wenn ein Segmentierungsfehler vorliegt. Dies passiert normalerweise, wenn die Anwendung versucht, auf einen Speicher zuzugreifen, der nicht verfügbar ist, oder wenn eine nicht gesetzte oder ungültige Umgebungsvariable vorhanden ist.
- Du erhältst den Beendencode 255, wenn der Befehl ENTRYPOINT CMD in deinem Container aufgrund eines Fehlers fehlschlägt. Überprüfe die CloudWatch-Metriken, um dich zu vergewissern, dass dies die Ursache ist.
Hinweis: Du kannst die DescribeTasks-API verwenden, um die Details einer angehaltenen Aufgabe anzuzeigen. Die Details für die angehaltene Aufgabe werden jedoch nur 1 Stunde lang in den Ergebnissen angezeigt.
Eine Container-Instance erfüllt die Amazon ECS-Aufgabenanforderungen nicht
Weitere Informationen zum Revolvieren der Container-Anforderungen findest du unter Wie behebe ich den Fehler „no container instance met all of its requirements“ in Amazon ECS?
Eine Container-Instance wird unerwartet beendet
Wenn du im Amazon ECS-Cluster einen Kapazitätsanbieter ohne verwaltete Beendigung verwendest, beendet der Kapazitätsanbieter möglicherweise Instances, die Aufgaben haben, die ausgeführt werden. Dies passiert, wenn eine Abskalierungsaktion stattfindet und der AWS ECS-Service instabil wird. Aktiviere den verwalteten Beendigungsschutz, damit der Kapazitätsanbieter keine Container-Instances beendet, auf denen Aufgaben ausgeführt werden.
Um den verwalteten Beendigungsschutz zu aktivieren, musst du den Abskalierungsschutz der Instance für die Auto Scaling-Gruppe aktivieren.
Gehe wie folgt vor, um den Abskalierungsschutz zu aktivieren:
- Öffne die Amazon-EC2-Konsole.
- Wähle im Navigationsbereich Auto-Scaling-Gruppen und dann deine Auto-Scaling-Gruppe aus.
- Wähle auf der Registerkarte Details unter Erweiterte Konfigurationen die Option Bearbeiten aus.
- Wähle unter Instance Scale-In-Schutz die Option Aktivieren des Scale-In-Schutzes für Instances aus.
- Wähle Aktualisieren aus.
Gehe wie folgt vor, um den verwalteten Beendigungsschutz zu aktivieren:
- Öffne die Amazon-ECS-Konsole.
- Wähle im Navigationsbereich die Option Cluster aus.
- Wähle auf der Seite Cluster deinen Cluster aus.
- Wähle auf der Seite Cluster : Name die Option Infrastruktur und dann Aktualisieren aus.
- Konfiguriere auf der Seite Kapazitätsanbieter erstellen unter Auto-Scaling-Gruppe unter Skalierungsrichtlinien die folgenden Optionen:
Wähle Verwaltete Skalierung aktivieren aus.
Wähle Skalierungsschutz aktivieren aus. - Wähle Aktualisieren aus.
Hinweis: Stelle sicher, dass andere Tools, die du verwendest, das AmazonECSManaged-Tag nicht aus der Auto-Scaling-Gruppe entfernen. Wenn ein Tool das Tag entfernt, kann Amazon ECS die Skalierung nicht verwalten.
Amazon ECS-Aufgaben innerhalb des Service können nicht gestartet werden
Wenn du einen Service erstellst oder aktualisierst, ist der Service möglicherweise nicht stabil, da die Amazon ECS-Aufgabe das Image nicht abrufen kann.
Informationen zur Behebung dieses Problems findest du in den folgenden AWS Knowledge Service-Artikeln:
- Wie behebe ich den „ResourceInitializationError“, wenn ich versuche, Secrets oder die Amazon ECR-Authentifizierung für ECS-Aufgaben abzurufen?
- Wie behebe ich den Fehler „cannotpullcontainererror“ für meine Amazon ECS-Aufgaben auf Fargate?
Ähnliche Informationen
Wie behebe ich Probleme bei der Container-Zustandsprüfung für Amazon ECS-Aufgaben?
Warum wurde meine Amazon ECS-Aufgabe angehalten?

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 8 Monaten
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr