Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Soms moet u mogelijk taak- en toepassingsfouten afhandelen in uw Azure Batch-oplossing. In dit artikel worden verschillende soorten Batch-fouten uitgelegd en wordt uitgelegd hoe u veelvoorkomende problemen kunt oplossen.
Foutcodes
Enkele algemene typen fouten die u in Batch kunt zien, zijn:
- Netwerkfouten bij aanvragen die Batch nooit hebben bereikt, of netwerkfouten wanneer het Batch-antwoord de client niet op tijd heeft bereikt.
- Interne serverfouten. Deze fouten hebben een HTTP-antwoord van de standaardstatuscode
5xx. - Fouten met betrekking tot beperking. Deze fouten omvatten
429of503statuscode HTTP-antwoorden met deRetry-afterkoptekst. -
4xxfouten zoalsAlreadyExistsenInvalidOperation. Deze fouten geven aan dat de resource niet de juiste status heeft voor de statusovergang.
Zie batchstatus en foutcodes voor gedetailleerde informatie over specifieke foutcodes. Deze verwijzing bevat foutcodes voor REST API, Batch-service en voor taaktaken en -planning.
Toepassingsfouten
Tijdens de uitvoering kan een toepassing diagnostische uitvoer produceren. U kunt deze uitvoer gebruiken om problemen op te lossen. De Batch-service schrijft standaarduitvoer en standaardfoutuitvoer naar de stdout.txt en stderr.txt bestanden in de taakmap op het rekenknooppunt. Zie Bestanden en mappen in Batch voor meer informatie.
Als u deze uitvoerbestanden wilt downloaden, gebruikt u Azure Portal of een van de Batch-SDK's. Als u bijvoorbeeld bestanden wilt ophalen voor probleemoplossing, gebruikt u ComputeNode.GetNodeFile en CloudTask.GetNodeFile in de Batch .NET-bibliotheek.
Taakfouten
Taakfouten vallen in verschillende categorieën.
Fouten bij de voorbewerking
Als een taak niet kan worden gestart, wordt er een preverwerkingsfout ingesteld voor de taak. Voorverwerkingsfouten kunnen optreden als:
- De resourcebestanden van de taak zijn verplaatst.
- Het opslagaccount is niet meer beschikbaar.
- Er is een ander probleem opgetreden waardoor het kopiëren van bestanden naar het knooppunt is verhinderd.
Fouten bij het uploaden van bestanden
Als bestanden die u hebt opgegeven voor een taak om welke reden dan ook niet kunnen worden geüpload, wordt er een bestandsuploadfout ingesteld voor de taak. Fouten bij het uploaden van bestanden kunnen optreden als:
- Het SAS-token (Shared Access Signature) dat is opgegeven voor toegang tot Azure Storage, is ongeldig.
- Het SAS-token biedt geen schrijfmachtigingen.
- Het opslagaccount is niet meer beschikbaar.
- Er is een ander probleem opgetreden waardoor het kopiëren van bestanden van het knooppunt is verhinderd.
Toepassingsfouten
Het proces dat is opgegeven door de opdrachtregel van de taak, kan ook mislukken. Zie Afsluitcodes voor taken voor meer informatie.
Voor toepassingsfouten configureert u Batch om de taak automatisch opnieuw uit te voeren tot een opgegeven aantal keren.
Beperkingsfouten
Als u de maximale uitvoeringsduur voor een taak of taak wilt opgeven, stelt u de maxWallClockTime beperking in. Gebruik deze instelling om taken te beëindigen die niet kunnen worden uitgevoerd.
Wanneer de taak de maximale tijd overschrijdt:
- De taak is gemarkeerd als voltooid.
- De afsluitcode is ingesteld op
0xC000013A. - Het veld schedulingError is gemarkeerd als
{ category:"ServerError", code="TaskEnded"}.
Afsluitcodes voor taak
Wanneer een taak een proces uitvoert, vult Batch de afsluitcode-eigenschap van de taak in met de retourcode van het proces. Als het proces een niet-nul-afsluitcode retourneert, markeert de Batch-service de taak als mislukt.
De Batch-service bepaalt de afsluitcode van een taak niet. Het proces zelf of het besturingssysteem waarop het proces wordt uitgevoerd, bepaalt de afsluitcode.
Taakfouten of onderbrekingen
Taken kunnen af en toe mislukken of worden onderbroken. Voorbeeld:
- De taaktoepassing zelf kan mislukken.
- Het knooppunt waarop de taak wordt uitgevoerd, kan opnieuw worden opgestart.
- Een bewerking voor het wijzigen van het formaat kan het knooppunt uit de pool verwijderen. Deze actie kan optreden als het toewijzingsbeleid van de pool knooppunten onmiddellijk verwijdert zonder te wachten tot taken zijn voltooid.
In alle gevallen kan Batch de taak automatisch opnieuw in de wachtrij plaatsen voor uitvoering op een ander knooppunt.
Het is ook mogelijk dat een onregelmatig probleem ertoe kan leiden dat een taak niet meer reageert of dat het te lang duurt om uit te voeren. U kunt een maximale uitvoeringsinterval voor een taak instellen. Als een taak het interval overschrijdt, onderbreekt de Batch-service de taaktoepassing.
Verbinding maken met rekenknooppunten
U kunt foutopsporing en probleemoplossing uitvoeren door u op afstand aan te melden bij een rekenknooppunt. Gebruik Azure Portal om een RDP-bestand (Remote Desktop Protocol) voor Windows-knooppunten te downloaden en om SSH-verbindingsgegevens (Secure Shell) voor Linux-knooppunten te verkrijgen. U kunt deze informatie ook downloaden met behulp van de Batch .NET - of Batch Python-API's .
Als u via RDP of SSH verbinding wilt maken met een knooppunt, maakt u eerst een gebruiker op het knooppunt. Gebruik een van de volgende methoden:
- Azure Portal
- Batch REST API: adduser
- Batch .NET API: ComputeNode.CreateComputeNodeUser
- Batch Python-module: add_user
Configureer of schakel zo nodig de toegang tot rekenknooppunten in of uit.
Problemen met knooppunten oplossen
Uw Batch-clienttoepassing of -service kan de metagegevens van mislukte taken onderzoeken om een probleemknooppunt te identificeren. Elk knooppunt in een pool heeft een unieke id. Taakmetagegevens bevatten het knooppunt waarop een taak wordt uitgevoerd. Nadat u het probleemknooppunt hebt gevonden, probeert u de volgende methoden om de fout op te lossen.
Knooppunt opnieuw opstarten
Het opnieuw opstarten van een knooppunt lost soms latente problemen op, zoals vastgelopen of gecrashte processen. Als uw pool een begintaak gebruikt of als uw taak gebruikmaakt van een taakvoorbereidingstaak, worden deze taken opnieuw gestart door een knooppunt.
- Batch REST API: opnieuw opstarten
- Batch .NET API: ComputeNode.Reboot
Knooppunt opnieuw inrichten
Als u een knooppunt opnieuw installeert, wordt het besturingssysteem opnieuw geïnstalleerd. Starttaken en jobvoorbereidingstaken worden opnieuw uitgevoerd na het opnieuw inrichten.
- Batch REST API: reimage
- Batch .NET API: ComputeNode.Reimage
Knooppunt uit pool verwijderen
Het verwijderen van het knooppunt uit de pool is soms nodig.
- Batch REST API: removenodes
- Batch .NET API: PoolOperations
Taakplanning op knooppunt uitschakelen
Als u taakplanning op een knooppunt uitschakelt, wordt het knooppunt effectief offline gehaald. Batch wijst geen verdere taken toe aan het knooppunt. Het knooppunt blijft echter actief in de pool. Vervolgens kunt u de fouten verder onderzoeken zonder de gegevens van de mislukte taak te verliezen. Het knooppunt zal ook niet voor meer taakfouten zorgen.
Schakel bijvoorbeeld taakplanning uit op het knooppunt. Meld u vervolgens op afstand aan bij het knooppunt. Bekijk de gebeurtenislogboeken en voer andere probleemoplossing uit. Nadat u de problemen hebt opgelost, schakelt u taakplanning opnieuw in om het knooppunt weer online te brengen.
- Batch REST API: enablescheduling
- Batch .NET API: ComputeNode.EnableScheduling
U kunt deze acties gebruiken om batchverwerkingstaken op te geven die momenteel op het knooppunt worden uitgevoerd. Wanneer u bijvoorbeeld taakplanning uitschakelt met de Batch .NET-API, kunt u een opsommingswaarde opgeven voor DisableComputeNodeSchedulingOption. U hebt de volgende keuzen:
- Actieve taken beëindigen:
Terminate - Taken opnieuw weergeven voor het plannen op andere knooppunten:
Requeue - Toestaan dat actieve taken worden voltooid voordat u de actie uitvoert:
TaskCompletion
Opnieuw proberen na fouten
De Batch-API’s informeren u van fouten. U kunt alle API's opnieuw proberen met behulp van de ingebouwde globale handler voor opnieuw proberen. Het is een best practice om deze optie te gebruiken.
Wacht na een fout enkele seconden voordat u het opnieuw probeert. Als u te vaak of te snel opnieuw probeert, worden aanvragen door de retry-handler beperkt.