Debugging von Jobs
Verwenden Sie die Tipps zur Fehlerbehebung, um zu erfahren, wie Sie IBM Cloud® Code Engine Jobs und Ausführungen Ihres Jobs beheben können.
Zu beachtende Jobgrenzen
Die maximale Anzahl Jobs, die pro Projekt pro Projekt ausgeführt werden können, ist 100. Sie sind auf insgesamt 100 Jobausführungen pro Projekt beschränkt, bevor Sie alte Jobs entfernen oder bereinigen müssen.
Weitere Informationen zu Begrenzungen für Jobs, einschließlich Speicher und CPU, finden Sie unter Grenzwerte und Kontingente für Code Engine.
Über die CLI können Sie den Befehl ibmcloud ce project get verwenden, um Informationen zu Grenzwerten und zur aktuellen Nutzung anzuzeigen. Zum
Beispiel:
ibmcloud ce project get --name myproject
Beispielausgabe
Getting project 'myproject'...
OK
Name: myproject
ID: abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
Status: active
Enabled: true
Application Private Visibility Supported: true
Selected: true
Region: us-south
Resource Group: default
Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
Age: 52d
Created: Tue, 28 Sep 2021 05:12:16 -0500
Updated: Tue, 28 Sep 2021 05:12:19 -0500
Quotas:
Category Used Limit
App revisions 2 120
Apps 1 40
Build runs 1 100
Builds 2 100
Configmaps 2 100
CPU 0 128
Ephemeral storage 0 512G
Functions 0 20
Instances (active) 0 250
Instances (total) 0 2500
Job runs 13 100
Jobs 2 100
Memory 0 512G
Secrets 6 100
Subscriptions (cron) 0 100
Subscriptions (IBM Cloud Object Storage) 0 100
Subscriptions (Kafka) 0 100
Protokolle für meine Jobs abrufen
Protokolle können hilfreich sein, um Probleme bei der Ausführung von Jobs zu beheben. Sie können Jobprotokolle über die Konsole oder über die Befehlszeilenschnittstelle anzeigen.
Wenn Sie Protokolle über die Konsole anzeigen, müssen Sie eine IBM Cloud Logs Instanz in derselben Region wie Ihr Code Engine -Projekt erstellen. Es ist nicht erforderlich, diese Instanz zu erstellen, bevor Sie mit Ihrem Code Engine-Job arbeiten. Code Engine vereinfacht die Aktivierung der Protokollierung für Ihre Jobs. Sie können Jobprotokolle anzeigen, nachdem Sie Protokollierungsfunktionen hinzugefügt haben. Weitere Informationen finden Sie im Abschnitt zum Anzeigen von Jobprotokollen in der Konsole.
Wenn Sie mit der CLI arbeiten, können Sie Protokolle aller Instanzen Ihres aktiven Jobs oder Protokolle einer bestimmten Instanz Ihres Jobs anzeigen.
-
Verwenden Sie den Befehl
ibmcloud ce jobrun list, um alle definierten Jobausführungen aufzulisten; zum Beispiel:ibmcloud ce jobrun list -
Verwenden Sie den Befehl
ibmcloud ce jobrun get, um die Details der Jobausführung abzurufen, einschließlich des Namens der Instanzen für die Jobausführung; Beispiel:ibmcloud ce jobrun get --name myjobrunBeispielausgabe
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events of jobrun 'myjobrun'... Run 'ibmcloud ce jobrun events -n myjobrun' to get the system events of the job run instances. Run 'ibmcloud ce jobrun logs -f -n myjobrun' to follow the logs of the job run instances. OK Name: myjobrun [...] Created: 2021-03-03T14:47:04-05:00 Image: icr.io/codeengine/firstjob Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Mode: task Array Indices: 1 - 4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 28m Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 28m 28m Running True 28m 28m Complete True 28m 28m Events: Type Reason Age Source Messages Normal Updated 29m (x8 over 29m) batch-job-controller Updated JobRun "myjobrun" Normal Completed 29m batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-1-0 0/1 Succeeded 0 29m myjobrun-2-0 0/1 Succeeded 0 29m myjobrun-3-0 0/1 Succeeded 0 29m myjobrun-4-0 0/1 Succeeded 0 29mWenn Sie differenziertere Details zur Jobausführung wünschen, verwenden Sie die Option
--o yamlmit dem Befehljobrun get, z. B.ibmcloud ce jobrun get --name myjobrun --o yaml. Diese Option ist nützlich, um ausführlichere Informationen in der Befehlszeilenschnittstelle für die Jobausführung anzuzeigen. -
Zeigen Sie die Protokolle der Jobausführung an.
- Wenn Sie die Protokolle einer bestimmten Instanz der Jobausführung anzeigen möchten, verwenden Sie den Befehl
ibmcloud ce jobrun logs --instance INSTANCE_NAME; Beispiel:
ibmcloud ce jobrun logs --instance myjobrun-4-0 ``` Beispielausgabe ```txt {: screen} Getting logs for job run instance 'myjobrun-4-0'... OK myjobrun-4-0/myjobrun: Hi from a batch job! My index is: 4 ``` * Wenn Sie die Protokolle aller Instanzen Ihrer Jobausführung anzeigen möchten, verwenden Sie den Befehl [**`ibmcloud ce jobrun logs --jobrun JOBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-logs); zum Beispiel: ```txt {: pre} ibmcloud ce jobrun logs --jobrun myjobrun ``` Beispielausgabe ```txt {: screen} Getting logs for all instances of job run 'myjobrun'... Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... OK myjobrun-1-0/myjobrun: Hi from a batch job! My index is: 1 myjobrun-2-0/myjobrun: Hi from a batch job! My index is: 2 myjobrun-3-0/myjobrun: Hi from a batch job! My index is: 3 myjobrun-4-0/myjobrun: Hi from a batch job! My index is: 4 ``` - Wenn Sie die Protokolle einer bestimmten Instanz der Jobausführung anzeigen möchten, verwenden Sie den Befehl
Weitere Informationen finden Sie unter Jobprotokolle über die Befehlszeilenschnittstelle anzeigen.
Systemereignisinformationen für meine Jobs abrufen
Systemereignisinformationen können nützlich sein, um Probleme beim Ausführen von Jobs zu beheben. Sie können Systemereignisinformationen mit der CLI anzeigen.
Sie können Systemereignisse aller Instanzen einer Jobausführung oder Systemereignisse einer bestimmten Instanz einer Jobausführung anzeigen.
-
Verwenden Sie den Befehl
ibmcloud ce jobrun list, um alle definierten Jobausführungen aufzulisten; zum Beispiel:ibmcloud ce jobrun list -
Verwenden Sie den Befehl
ibmcloud ce jobrun get, um die Details der Jobausführung abzurufen, einschließlich des Namens der Instanzen der Jobausführung; Beispiel:ibmcloud ce jobrun get --name myjobrunBeispielausgabe
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events of jobrun 'myjobrun'... OK Name: myjobrun [...] Created: 2021-03-03T14:47:04-05:00 Image: icr.io/codeengine/firstjob Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Mode: task Array Indices: 1 - 4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 28m Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 28m 28m Running True 28m 28m Complete True 28m 28m Events: Type Reason Age Source Messages Normal Updated 29m (x8 over 29m) batch-job-controller Updated JobRun "myjobrun" Normal Completed 29m batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-1-0 0/1 Succeeded 0 29m myjobrun-2-0 0/1 Succeeded 0 29m myjobrun-3-0 0/1 Succeeded 0 29m myjobrun-4-0 0/1 Succeeded 0 29mWenn Sie differenziertere Details zur Jobausführung wünschen, verwenden Sie die Option
--o yamlmit dem Befehljobrun get, z. B.ibmcloud ce jobrun get --name myjobrun --o yaml. Diese Option ist nützlich, um ausführlichere Informationen in der Befehlszeilenschnittstelle für die Jobausführung anzuzeigen. -
Zeigen Sie die Systemereignisinformationen der Jobausführung an.
- Wenn Sie die Ereignisse einer bestimmten Instanz der Jobausführung anzeigen möchten, verwenden Sie den Befehl
ibmcloud ce jobrun events --instance INSTANCE_NAME; Beispiel:
ibmcloud ce jobrun events --instance myjobrun-4-0 ``` Beispielausgabe ```txt {: screen} Getting events for job run instance 'myjobrun-4-0'... OK myjobrun-4-0: Type Reason Age Source Messages Normal Scheduled 2m14s default-scheduler Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10 Normal Pulling 2m13s kubelet, 10.240.64.10 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 2m12s kubelet, 10.240.64.10 Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s Normal Created 2m11s kubelet, 10.240.64.10 Created container myjobrun Normal Started 2m11s kubelet, 10.240.64.10 Started container myjobrun ``` * Verwenden Sie den Befehl [**`ibmcloud ce jobrun events --jobrun JUBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-events), um Ereignisse aller Instanzen Ihrer Jobausführung anzuzeigen; zum Beispiel: ```txt {: pre} ibmcloud ce jobrun events --jobrun myjobrun ``` Beispielausgabe ```txt {: screen} Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events for all instances of job run 'myjobrun'... OK myjobrun-1-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-1-0 to 10.240.128.22 Normal Pulling 65s kubelet, 10.240.128.22 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 64s kubelet, 10.240.128.22 Successfully pulled image "icr.io/codeengine/firstjob" in 427.276949ms Normal Created 64s kubelet, 10.240.128.22 Created container myjobrun Normal Started 64s kubelet, 10.240.128.22 Started container myjobrun myjobrun-2-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-2-0 to 10.240.0.11 Normal Pulling 65s kubelet, 10.240.0.11 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 63s kubelet, 10.240.0.11 Successfully pulled image "icr.io/codeengine/firstjob" in 1.268252989s Normal Created 63s kubelet, 10.240.0.11 Created container myjobrun Normal Started 63s kubelet, 10.240.0.11 Started container myjobrun myjobrun-3-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-3-0 to 10.240.0.37 Normal Pulling 65s kubelet, 10.240.0.37 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 63s kubelet, 10.240.0.37 Successfully pulled image "icr.io/codeengine/firstjob" in 1.118647987s Normal Created 63s kubelet, 10.240.0.37 Created container myjobrun Normal Started 63s kubelet, 10.240.0.37 Started container myjobrun myjobrun-4-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10 Normal Pulling 65s kubelet, 10.240.64.10 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 64s kubelet, 10.240.64.10 Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s Normal Created 63s kubelet, 10.240.64.10 Created container myjobrun Normal Started 63s kubelet, 10.240.64.10 Started container myjobrun ``` - Wenn Sie die Ereignisse einer bestimmten Instanz der Jobausführung anzeigen möchten, verwenden Sie den Befehl
Verstehen, warum Job-Run-Indizes fehlschlagen können
Wenn die Job-Lauf-Indizes in der Konsole fehlschlagen, können Sie die Fehler und die Gründe nachschlagen, um Probleme zu beheben, die Probleme zu beheben und die Job-Lauf-Indizes erneut auszuführen.
Um mit Ihren Jobs und Jobausführungen zu arbeiten, klicken Sie auf der Seite „ Code Engine-Projekte “ in der Projektliste auf den Namen Ihres Projekts und
anschließend auf „ Jobs “. Auf der Registerkarte „Jobausführungen“ werden die einzelnen Jobausführungen angezeigt. Unvollständige Auftragsläufe werden in der Spalte „Status“ als „ Failed (<error>) “ angezeigt. In der folgenden Tabelle werden die häufigsten Fehler beim Job-Run-Index und die zu ergreifenden Maßnahmen erläutert:
| Fehler | Erläuterung | Empfohlene Benutzeraktion |
|---|---|---|
ContainerExitedCode |
Ein Fehler, der einen von der Benutzer-Workload bereitgestellten Exit-Code enthält. | Ermitteln Sie den Grund für den Exit-Code in Ihrer Anwendung und beheben Sie ihn. |
ExceededEphemeralStorage |
Die Instanz hat mehr kurzlebigen Speicherplatz in ihrem Container zugewiesen, als zulässig ist. | Erhöhen Sie den kurzzeitigen Speicher Ihrer Ressource. |
ExecutableNotFound |
Die angegebene ausführbare Datei konnte im Container nicht gefunden werden. Ohne sie kann der Container nicht starten. | Überprüfen Sie, ob der in Ihrem Container-Image angegebene Einstiegspunkt korrekt ist und ob die ausführbare Datei im Image vorhanden ist. |
MaxExecutionTimeExceeded |
Der Job-Lauf wurde nicht innerhalb der maximalen Ausführungszeit abgeschlossen. Wenn mehrere Instanzen ausgeführt wurden, zeigen alle Instanzen, die noch nicht abgeschlossen sind, diesen Fehler an. | Erhöhen Sie den Timeout-Wert für den Joblauf. |
OOMKilled |
Ein Fehler aufgrund von unzureichendem Speicher. Die Instanz hat die zugewiesene Speichergrenze überschritten. | Erhöhen Sie die CPU- und Speicherkapazität Ihrer Ressource. |
Nachdem Sie die Fehler behoben haben, klicken Sie auf "Rerun failed indexes ", um den Auftrag für fehlgeschlagene Indizes erneut auszuführen.
Container-Image-Referenz für eigenen Job überprüfen
Wenn Sie mit Code Engine-Jobs arbeiten, müssen Sie eine Container-Image-Referenz und einen geheimen Registry-Schlüssel angeben, um auf das Image zuzugreifen. Damit der Job ordnungsgemäß funktioniert, müssen die Imagereferenz und ihre Zugriffseigenschaften für die Lebensdauer des Jobs gültig bleiben.