Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Manchmal müssen Sie Aufgaben- und Anwendungsfehler in Ihrer Azure Batch-Lösung behandeln. In diesem Artikel werden verschiedene Arten von Batchfehlern und das Beheben häufiger Probleme erläutert.
Fehlercodes
Einige allgemeine Arten von Fehlern, die in Batch möglicherweise angezeigt werden, sind:
- Netzwerkfehler bei Anfragen, die Batch nie erreicht haben, oder Netzwerkfehler, wenn die Batch-Antwort den Client nicht rechtzeitig erreicht hat.
- Interne Serverfehler. Diese Fehler weisen eine STANDARDMÄßIGe
5xxHTTP-Antwort mit Statuscode auf. - Drosselungsbezogene Fehler Zu diesen Fehlern gehören HTTP-Antworten mit dem Statuscode
429oder503und dem HeaderRetry-after. -
4xxFehler wieAlreadyExistsundInvalidOperation. Diese Fehler deuten darauf hin, dass sich die Ressource nicht im richtigen Zustand für den Zustandsübergang befindet.
Ausführliche Informationen zu bestimmten Fehlercodes finden Sie unter Batchstatus und Fehlercodes. Diese Referenz enthält Fehlercodes für REST-API, Batchdienst und für Auftragsaufgaben und -planung.
Anwendungsfehler
Während der Ausführung kann eine Anwendung die Diagnoseausgabe erzeugen. Sie können diese Ausgabe verwenden, um Probleme zu beheben. Der Batch-Dienst schreibt eine Standardausgabe und eine Standardfehlerausgabe in die Dateien stdout.txt und stderr.txt im Taskverzeichnis auf dem Computeknoten. Weitere Informationen finden Sie unter "Dateien und Verzeichnisse in Batch".
Um diese Ausgabedateien herunterzuladen, verwenden Sie das Azure-Portal oder eine der Batch-SDKs. Um beispielsweise Dateien für Problembehandlungszwecke abzurufen, verwenden Sie BatchClient.GetNodeFile im Azure. Compute.Batch-Bibliothek.
Vorgangsfehler
Vorgangsfehler werden in mehrere Kategorien unterteilt.
Vorverarbeitungsfehler
Wenn ein Vorgang nicht gestartet werden kann, wird ein Vorverarbeitungsfehler für den Vorgang festgelegt. Fehler bei der Vorverarbeitung können auftreten, wenn:
- Die Ressourcendateien der Aufgabe wurden verschoben.
- Das Speicherkonto ist nicht mehr verfügbar.
- Ein weiteres Problem ist aufgetreten, das das erfolgreiche Kopieren von Dateien in den Knoten verhinderte.
Dateiuploadfehler
Wenn Dateien, die Sie für eine Aufgabe angegeben haben, aus irgendeinem Grund nicht hochgeladen werden können, wird für die Aufgabe ein Dateiuploadfehler festgelegt. Fehler beim Hochladen von Dateien können auftreten, wenn:
- Das für den Zugriff auf Azure Storage bereitgestellte SAS-Token (Shared Access Signature) ist ungültig.
- Das SAS-Token stellt keine Schreibberechtigungen bereit.
- Das Speicherkonto ist nicht mehr verfügbar.
- Ein weiteres Problem ist aufgetreten, das das erfolgreiche Kopieren von Dateien aus dem Knoten verhinderte.
Anwendungsfehler
Der durch die Befehlszeile der Aufgabe angegebene Prozess kann ebenfalls fehlschlagen. Weitere Informationen finden Sie unter Aufgabenausgangscodes.
Konfigurieren Sie batch für Anwendungsfehler so, dass die Aufgabe bis zu einer bestimmten Anzahl von Wiederholungen automatisch wiederholt wird.
Einschränkungsfehler
Um die maximale Ausführungsdauer für einen Auftrag oder einen Vorgang anzugeben, legen Sie die maxWallClockTime Einschränkung fest. Verwenden Sie diese Einstellung, um Vorgänge zu beenden, die nicht ausgeführt werden können.
Wenn der Vorgang die maximale Zeit überschreitet:
- Die Aufgabe wird als abgeschlossen markiert.
- Der Beendigungscode ist auf
0xC000013Agesetzt. - Das Feld "schedulingError " ist als
{ category:"ServerError", code="TaskEnded"}gekennzeichnet.
Beendigungscodes für Aufgaben
Wenn eine Aufgabe einen Prozess ausführt, füllt Batch die Exit-Codeeigenschaft der Aufgabe mit dem Rückgabecode des Prozesses auf. Wenn der Prozess einen Beendigungscode ungleich null zurückgibt, markiert der Batch-Dienst die Aufgabe als fehlgeschlagen.
Der Batchdienst bestimmt nicht den Beendigungscode einer Aufgabe. Der Prozess selbst oder das Betriebssystem, auf dem der Prozess ausgeführt wird, bestimmt den Beendigungscode.
Vorgangsfehler oder Unterbrechungen
Vorgänge können gelegentlich fehlschlagen oder unterbrochen werden. Beispiel:
- Die Aufgabenanwendung selbst schlägt möglicherweise fehl.
- Der Knoten, auf dem die Aufgabe ausgeführt wird, kann neu gestartet werden.
- Ein Größenänderungsvorgang kann den Knoten aus dem Pool entfernen. Diese Aktion kann passieren, wenn die Freigaberichtlinie des Pools Knoten sofort entfernt, ohne auf den Abschluss der Aufgaben zu warten.
In jedem Fall kann Batch die Aufgabe automatisch zur Ausführung auf einem anderen Knoten in die Warteschlange stellen.
Es ist auch möglich, dass ein zeitweiliges Problem dazu führt, dass eine Aufgabe nicht mehr reagiert oder zu lange ausgeführt wird. Sie können ein maximales Ausführungsintervall für einen Vorgang festlegen. Wenn ein Vorgang das Intervall überschreitet, unterbricht der Batchdienst die Aufgabenanwendung.
Mit Rechenknoten verbinden
Sie können Debugging und Problembehandlung durchführen, indem Sie sich remote bei einem Computeknoten anmelden. Verwenden Sie das Azure-Portal, um eine RDP-Datei (Remotedesktop Protocol) für Windows-Knoten herunterzuladen und Verbindungsinformationen für Linux-Knoten (Secure Shell, SSH) abzurufen. Sie können diese Informationen auch über die Azure.Compute.Batch- oder Batch Python-APIs herunterladen.
Um eine Verbindung mit einem Knoten über RDP oder SSH herzustellen, erstellen Sie zuerst einen Benutzer auf dem Knoten. Verwenden Sie eine der folgenden Methoden:
- Das Azure-Portal
- Batch-REST-API: adduser
- Azure. Compute.Batch-API: BatchClient.CreateNodeUserAsync
- Batch-Python-Modul: add_user
Konfigurieren oder deaktivieren Sie bei Bedarf den Zugriff auf Computeknoten.
Problembehandlungsknoten
Die Batchclientanwendung oder der Batchdienst können die Metadaten fehlerhafter Aufgaben untersuchen, um einen Problemknoten zu identifizieren. Jeder Knoten in einem Pool verfügt über eine eindeutige ID. Aufgabenmetadaten enthalten den Knoten, auf dem eine Aufgabe ausgeführt wird. Nachdem Sie den Problemknoten gefunden haben, versuchen Sie die folgenden Methoden, um den Fehler zu beheben.
Knoten neu starten
Durch den Neustart eines Knotens werden manchmal latente Probleme behoben, z. B. hängen gebliebene oder abgestürzte Prozesse. Wenn Ihr Pool eine Startaufgabe verwendet oder Ihr Auftrag eine Auftragsvorbereitungsaufgabe verwendet, werden diese Aufgaben bei einem Knotenneustart ausgeführt.
- Batch-REST-API: Neustart
- Azure. Compute.Batch-API: BatchClient.RebootNodeAsync
Reimaging für Knoten ausführen
Durch das Reimaging eines Knotens wird das Betriebssystem neu installiert. Starten Sie Tasks und Auftragsvorbereitungstasks, die nach dem Reimaging erneut ausgeführt werden.
- Batch-REST-API: Reimage
- Azure. Compute.Batch-API: BatchClient.ReimageNodeAsync
Knoten aus Pool entfernen
Das Entfernen des Knotens aus dem Pool ist manchmal erforderlich.
- Batch-REST-API: removenodes
- Azure. Compute.Batch-API: BatchClient-Poolmethoden
Aufgabenplanung auf Knoten deaktivieren
Durch das Deaktivieren der Aufgabenplanung auf einem Knoten wird der Knoten effektiv offline. Batch weist dem Knoten keine weiteren Aufgaben zu. Der Knoten läuft jedoch weiterhin im Pool. Anschließend können Sie die Fehler weiter untersuchen, ohne die Daten der fehlgeschlagenen Aufgabe zu verlieren. Der Knoten verursacht auch keine weiteren Vorgangsfehler.
Deaktivieren Sie beispielsweise die Vorgangsplanung auf dem Knoten. Melden Sie sich dann remote beim Knoten an. Überprüfen Sie die Ereignisprotokolle, und führen Sie weitere Problembehandlungen durch. Nachdem Sie die Probleme behoben haben, aktivieren Sie die Vorgangsplanung erneut, um den Knoten wieder online zu schalten.
- Batch-REST-API: ermöglicht die Terminplanung
- Azure.Compute.Batch-API: BatchClient.EnableNodeSchedulingAsync
Mithilfe dieser Aktionen können Sie festlegen, wie Batch Aufgaben verarbeitet, die derzeit auf dem Knoten ausgeführt werden. Wenn Sie beispielsweise die Aufgabenplanung in der Azure.Compute.Batch-API deaktivieren, können Sie einen Enumerationswert für BatchNodeDisableSchedulingOption angeben. Sie haben folgende Möglichkeiten:
- Beenden Sie ausgeführte Aufgaben:
Terminate - Tasks für die Zeitplanung auf anderen Knoten erneut in die Warteschlange setzen:
Requeue - Laufende Aufgaben abschließen lassen, bevor die Aktion ausgeführt wird:
TaskCompletion
Wiederholen nach Fehlern
Die Batch-APIs benachrichtigen Sie über Fehler. Sie können alle APIs mithilfe des integrierten globalen Wiederholungshandlers wiederholen. Es empfiehlt sich, diese Option zu verwenden.
Warten Sie nach einem Fehler mehrere Sekunden, bevor Sie den Vorgang wiederholen. Wenn Wiederholungsversuche zu häufig oder zu schnell erfolgen, drosselt der Wiederholungshandler die Anforderungen.