Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Wie behebe ich den Fehler „DockerTimeoutError“ in AWS Batch?
Die Jobs in meiner AWS Batch-Rechnerumgebung schlagen fehl und lösen die folgende Fehlermeldung aus: „DockerTimeoutError: Could not transition to created; timed out after waiting 4m0s.“ Ich möchte den Fehler beheben.
Kurzbeschreibung
Wenn Ihre Docker start und Docker create-API-Aufrufe länger als 4 Minuten dauern, meldet AWS Batch einen DockerTimeoutError-Fehler.
Hinweis: Das Standard-Timeout-Limit, das der Amazon Elastic Container Service (Amazon ECS)-Containeragent festlegt, beträgt 4 Minuten.
Die folgenden Gründe verursachen diesen Fehler am häufigsten:
- Die ECS Instance Volumes der AWS-Batch-Rechnerumgebung stehen aufgrund aller anderen Jobs in Ihrer Warteschlange unter hohem I/O-Druck. Diese Jobs können das Burst-Balance erschöpfen.
- Gestoppte ECS-Container werden nicht schnell genug bereinigt, um den Docker-Daemon freizugeben. Wenn Sie ein angepasstes Amazon Machine Image (AMI) anstelle des Standard-AMI, das AWS Batch bereitstellt, verwenden, können Docker-Probleme auftreten.
Wenn keines dieser Probleme den Fehler verursacht, gehen Sie wie folgt vor, um dsa Problem zu beheben:
- Überprüfen Sie Ihre Docker-Protokolle, um die Fehlerquelle zu ermitteln.
- Führen Sie das Amazon-ECS-Protokollkollektor-Skript auf den ECS Instances im ECS Cluster aus, der Ihrer AWS-Batch-Rechnerumgebung zugeordnet ist.
Lösung
Burst-Balance-Probleme lösen
Überprüfen Sie die Burst Balance Ihrer ECS Instance
**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.
Führen Sie die folgenden Schritte aus:
- Öffnen Sie die Amazon-ECS-Konsole.
- Wählen Sie im Navigationsbereich die OptionClusteraus. Wählen Sie dann den Cluster aus, der Ihren Job enthält.
Hinweis: Der Name des Clusters beginnt mit dem Namen der Rechnerumgebung, gefolgt von**\ _Batch\ _** und einer zufälligen Folge von Zahlen und Buchstaben. - Wählen Sie die Registerkarte Infrastruktur.
- Wählen Sie in der Spalte Infrastruktur unter der Zeile Container-Instances Ihre Instance-ID aus.
Hinweis: Führen Sie den AWS-Batch-AWS CLI-Befehl describe-jobs aus, um die Instance-ID des fehlgeschlagenen Jobs zu ermitteln. Die Instance-ID erscheint in der Ausgabe für containerInstanceArn. - Stellen Sie in der Amazon EC2-Konsole sicher, dass die Instance immer noch ausgewählt ist. Wählen Sie dann im Bereich Speicher den Link für Ihre volumeID aus.
- Wählen Sie im Popup-Fenster „Gerät blockieren“ unter Volume ID Ihre Lautstärke aus.
- Wählen Sie die Registerkarte Überwachung aus. Wählen Sie dann Burst Balance aus, um Ihre Burst-Balance-Metriken zu überprüfen. Wenn Ihre Burst Balance auf 0 fällt, ist Ihre Burst Balance aufgebraucht.
Erstellen Sie eine Startvorlage für Ihre verwaltete Rechnerumgebung
Hinweis: Wenn Sie die Startvorlage ändern, müssen Sie eine neue Rechnerumgebung erstellen.
Führen Sie die folgenden Schritte aus:
- Öffnen Sie die Amazon-EC2-Konsole und wählen Sie dann Startvorlagen aus.
- Wählen Sie Startvorlage erstellen aus.
- Wählen Sie für AMI ID das für Amazon ECS optimierte Standard-AMI aus.
- Wählen Sie im Abschnitt Speicher (Volumes) in der Spalte Datenträgertyp einen Datenträgertyp aus. Geben Sie dann einen Ganzzahlwert in die Spalte Größe (GiB) ein.
Hinweis: Wenn Sie Bereitgestellte IOPS SSD (io1) als Ihren Datenträgertyp wählen, geben Sie einen Ganzzahlwert ein, der für IOPS zulässig ist. - Wählen Sie Startvorlage erstellen aus.
- Verwenden Sie Ihre neue Startvorlage, um eine neue verwaltete Rechnerumgebung zu erstellen.
Erstellen Sie eine AWS-Batch-Rechnerumgebung mit Ihrem AMI
Hinweis: Wenn Sie das AMI ändern, müssen Sie eine neue Rechnerumgebung erstellen, da Sie den AMI ID-Parameter nicht aktualisieren können.
Führen Sie die folgenden Schritte aus:
- Öffnen Sie die Amazon-EC2-Konsole.
- Wählen Sie Instance starten aus.
- Folgen Sie den Schritten des Einrichtungsassistenten, um Ihre Instance zu erstellen.
Wichtig: Ändern Sie auf der Seite Speicher hinzufügen den Datenträgertyp oder die Größe Ihrer Instance. Je größer der Datenträger ist, desto höher ist die Ausgangsleistung und desto langsamer wird die Burst Balance wieder aufgefüllt. Um eine bessere Leistung bei hohen I/O-Lasten zu erzielen, ändern Sie den Datenträger auf den Typ io1. - Erstellen Sie ein Rechenressourcen-AMI aus Ihrer Instance.
- Erstellen Sie eine Rechnerumgebung für AWS Batch, die Ihre AMI ID enthält.
Docker-Probleme lösen
Standardmäßig bereinigt der Amazon ECS Container Agent automatisch gestoppte Jobs und Docker-Images, die Ihre Container Instances nicht verwenden. Wenn Sie neue Jobs mit neuen Images ausführen, füllt sich Ihr Container-Speicher möglicherweise mit Docker-Images, die Sie nicht verwenden. Das Standard-AMI für AWS Batch optimiert Ihre Amazon-ECS-Cleanup-Einstellungen.
Führen Sie die folgenden Schritte aus:
- Verwenden Sie SSH, um eine Verbindung zur Container-Instance für Ihre AWS-Batch-Rechnerumgebung herzustellen.
- Führen Sie den Docker-Befehl inspect ecs-agent aus, um den Amazon ECS Container Agent zu überprüfen. Überprüfen Sie dann den Abschnitt env in der Ausgabe.
Hinweis: Um die Aufgaben- und Image-Bereinigung zu beschleunigen, reduzieren Sie die Werte der folgenden Variablen:
ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
ECS_IMAGE_CLEANUP_INTERVAL
ECS_IMAGE_MINIMUM_CLEANUP_AGE
ECS_NUM_IMAGES_DELETE_PER_CYCLE
Sie können auch einstellbare Parameter für die automatische Job- und Image-Bereinigung verwenden. - Erstellen Sie ein neues AMI mit aktualisierten Werten.
-oder-
Erstellen Sie eine Startvorlage mit den Benutzerdaten, die Ihre neuen Umgebungsvariablen enthält.
Erstellen Sie ein neues AMI mit aktualisierten Werten
Führen Sie die folgenden Schritte aus:
- Stellen Sie Ihre Agentenkonfigurationsparameter in der Datei /etc/ecs/ecs.config ein.
- Starten Sie Ihren Container Agent neu.
- Erstellen Sie ein Rechenressourcen-AMI aus Ihrer Instance.
- Erstellen Sie eine Rechnerumgebung für AWS Batch, die Ihre AMI ID enthält.
Erstellen Sie eine Startvorlage mit den Benutzerdaten, die Ihre neuen Umgebungsvariablen enthält
Führen Sie die folgenden Schritte aus:
-
Erstellen einer Startvorlage mit Benutzerdaten.
Beispielsweise überschreiben die Benutzerdaten in der folgenden mehrteiligen MIME-Datei die standardmäßigen Cleanup-Einstellungen für ein Docker-Image und eine Rechnerressource:
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash echo ECS_IMAGE_CLEANUP_INTERVAL=60m >> /etc/ecs/ecs.config echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=60m >> /etc/ecs/ecs.config --==MYBOUNDARY==--
Weitere Informationen zu mehrteiligen MIME-Dateien finden Sie unter Mime Multi Part File auf der Cloud-Init-Website.
-
Verwenden Sie Ihre neue Startvorlage, um eine verwaltete Rechnerumgebung zu erstellen.
Ähnliche Informationen
AWS-Services, die CloudWatch-Metriken veröffentlichen
amazon-ecs-agent auf der GitHub-Webseite

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren