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 für Anforderungen, die nie Batch- oder Netzwerkfehler erreicht haben, wenn die Batchantwort den Client nicht rechtzeitig erreicht hat.
- Interne Serverfehler. Diese Fehler weisen eine STANDARDMÄßIGe
5xx
HTTP-Antwort mit Statuscode auf. - Drosselungsbezogene Fehler. Zu diesen Fehlern gehören
429
HTTP-Antworten mit dem503
Header oderRetry-after
Statuscode. -
4xx
Fehler wieAlreadyExists
undInvalidOperation
. 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 Batchdienst schreibt die Standardausgabe und die Standardfehlerausgabe in die stdout.txt und stderr.txt Dateien im Aufgabenverzeichnis 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 ComputeNode.GetNodeFile und CloudTask.GetNodeFile in der Batch.NET-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 des Vorgangs 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
0xC000013A
. - Das Feld "schedulingError " ist als
{ category:"ServerError", code="TaskEnded"}
gekennzeichnet.
Vorgangsausgangscodes
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 Nichtzero-Beendigungscode zurückgibt, kennzeichnet der Batchdienst 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 auftreten, wenn die Deallocation-Richtlinie des Pools Knoten sofort entfernt, ohne auf den Abschluss von Vorgängen zu warten.
In allen Fällen kann Batch die Aufgabe für die Ausführung auf einem anderen Knoten automatisch erneut abfragen.
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.
Herstellen einer Verbindung mit Computeknoten
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 (Remote Desktop Protocol) für Windows-Knoten herunterzuladen und Verbindungsinformationen für Linux-Knoten (Secure Shell, SSH) abzurufen. Sie können diese Informationen auch mithilfe der Batch-.NET - 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
- Batch .NET-API: ComputeNode.CreateComputeNodeUser
- 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.
Neustartknoten
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, führt ein Knotenneustart diese Aufgaben aus.
- Batch-REST-API: Neustart
- Batch .NET-API: ComputeNode.Reboot
Knoten "Neuimage"
Durch das Neuinstallieren eines Knotens wird das Betriebssystem neu installiert. Starten Sie Aufgaben und Aufgabenvorbereitungsaufgaben erneut, nachdem die Neugestaltung erfolgt.
- Batch-REST-API: Reimage
- Batch .NET-API: ComputeNode.Reimage
Knoten aus Pool entfernen
Das Entfernen des Knotens aus dem Pool ist manchmal erforderlich.
- Batch-REST-API: removenodes
- .NET-BATCH-API: PoolOperations
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 wird jedoch weiterhin im Pool ausgeführt. 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
- Batch .NET-API: ComputeNode.EnableScheduling
Mithilfe dieser Aktionen können Sie batchhandles Aufgaben angeben, die derzeit auf dem Knoten ausgeführt werden. Wenn Sie beispielsweise die Vorgangsplanung mit der Batch-.NET-API deaktivieren, können Sie einen Enumerationswert für DisableComputeNodeSchedulingOption angeben. Sie haben folgende Möglichkeiten:
- Beenden Sie ausgeführte Aufgaben:
Terminate
- Aktualisieren Sie Vorgänge für die Planung auf anderen Knoten:
Requeue
- Ausführen von Aufgaben vor dem Ausführen der Aktion zulassen:
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 Sie zu häufig oder zu schnell versuchen, drosselt der Wiederholungshandler Anforderungen.