Delen via


Azure Batch taak en taakfouten

Er kunnen verschillende fouten optreden wanneer u Azure Batch taken en taken toevoegt, plant of uitvoert. Het is eenvoudig om fouten te detecteren die optreden wanneer u taken en taken toevoegt. De API, opdrachtregel of gebruikersinterface retourneert eventuele fouten meestal onmiddellijk. In dit artikel wordt beschreven hoe u kunt controleren op fouten die optreden nadat taken en taken zijn verzonden.

Taakfouten

Een taak is een groep van een of meer taken, waarmee opdrachtregels worden opgegeven die moeten worden uitgevoerd. U kunt de volgende optionele parameters opgeven wanneer u een taak toevoegt. Deze parameters zijn van invloed op hoe de taak kan mislukken.

  • JobConstraints. U kunt eventueel de maxWallClockTime eigenschap gebruiken om de maximale hoeveelheid tijd in te stellen die een taak actief of uitgevoerd mag zijn. Als de taak groter is dan de maxWallClockTime, wordt de taak beëindigd met de terminateReason eigenschap ingesteld op MaxWallClockTimeExpiry in JobExecutionInformation.

  • JobPreparationTask. U kunt eventueel een taakvoorbereidingstaak opgeven die moet worden uitgevoerd op elk rekenknooppunt dat is gepland om een taak uit te voeren. Het knooppunt voert de taakvoorbereiding uit voordat een taak voor de taak voor de eerste keer wordt uitgevoerd. Als de taakvoorbereiding mislukt, wordt de taak niet uitgevoerd en wordt de taak niet voltooid.

  • JobReleaseTask. U kunt desgewenst een jobreleasetaak opgeven voor taken met een taakvoorbereidingstaak. Wanneer een taak wordt beëindigd, wordt de taak voor taakrelease uitgevoerd op elk poolknooppunt waarop een taakvoorbereidingstaak is uitgevoerd. Als een taak voor het vrijgeven van een taak mislukt, wordt de taak nog steeds verplaatst naar een completed status.

In de Azure Portal kunt u deze parameters instellen in de secties Taakbeheer, voorbereidings- en releasetaken en Geavanceerd van het scherm Batch-taak toevoegen.

Taakeigenschappen

Controleer de volgende taakeigenschappen in JobExecutionInformation op fouten:

  • De terminateReason eigenschap geeft aan MaxWallClockTimeExpiry of de taak de maxWallClockTime opgegeven taak heeft overschreden in de taakbeperkingen en daarom de taak is beëindigd. Deze eigenschap kan ook worden ingesteld op taskFailed als het kenmerk van onTaskFailure de taak is ingesteld op performExitOptionsJobActionen een taak mislukt met een afsluitvoorwaarde die een jobAction van terminatejobopgeeft.

  • De eigenschap JobSchedulingError wordt ingesteld als er een planningsfout is opgetreden.

Taakvoorbereidingstaken

Een exemplaar van een taakvoorbereidingstaak wordt uitgevoerd op elk rekenknooppunt wanneer het knooppunt voor de eerste keer een taak voor de taak uitvoert. U kunt de taak voor het voorbereiden van de taak zien als een taaksjabloon, waarbij meerdere exemplaren worden uitgevoerd, tot het aantal knooppunten in een pool. Controleer de taakexemplaren van de taakvoorbereiding om te bepalen of er fouten zijn opgetreden.

U kunt de API Job - List Preparation and Release Task Status gebruiken om de uitvoeringsstatus van alle exemplaren van taakvoorbereiding en releasetaken voor een opgegeven taak weer te geven. Net als bij andere taken is JobPreparationTaskExecutionInformation beschikbaar met eigenschappen zoals failureInfo, exitCodeen result.

Wanneer een taak voor het voorbereiden van een taak wordt uitgevoerd, wordt de taak die de taak voor het voorbereiden van de taak heeft geactiveerd, verplaatst naar een taskState van preparing. Als de taakvoorbereiding mislukt, wordt de activerende taak teruggezet naar de active status en wordt deze niet uitgevoerd.

Als een taak voor het voorbereiden van een taak mislukt, wordt de activerende taak niet uitgevoerd. De taak wordt niet voltooid en is vastgelopen. Als er geen andere taken zijn met taken die kunnen worden gepland, wordt de pool mogelijk niet gebruikt.

Taakuitgiftetaken

Een exemplaar van een jobreleasetaak wordt uitgevoerd wanneer de taak wordt beëindigd op elk knooppunt waarop een taakvoorbereidingstaak is uitgevoerd. Controleer de exemplaren van de taakrelease om te bepalen of er fouten zijn opgetreden.

U kunt de API Job - List Preparation and Release Task Status gebruiken om de uitvoeringsstatus van alle exemplaren van taakvoorbereiding en releasetaken voor een opgegeven taak weer te geven. Net als bij andere taken is JobReleaseTaskExecutionInformation beschikbaar met eigenschappen zoals failureInfo, exitCodeen result.

Als een of meer taakuitgiftetaken mislukken, wordt de taak nog steeds beëindigd en verplaatst naar een completed status.

Taakfouten

Taaktaken kunnen om de volgende redenen mislukken:

  • De opdrachtregel van de taak mislukt en retourneert met een andere afsluitcode dan nul.
  • Een of meer resourceFiles opgegeven voor een taak kunnen niet worden gedownload.
  • Een of meer outputFiles opgegeven voor een taak kunnen niet worden geüpload.
  • De verstreken tijd voor de taak overschrijdt de maxWallClockTime eigenschap die is opgegeven in TaskConstraints.

Controleer in alle gevallen de volgende eigenschappen op fouten en informatie over de fouten:

  • De eigenschap TaskExecutionInformation heeft meerdere eigenschappen die informatie over een fout bieden. De taskExecutionResult geeft aan of de taak om welke reden dan ook is mislukt en exitCodefailureInfo geef meer informatie over de fout op.

  • De taak wordt altijd verplaatst naar de completedTaskState, ongeacht of deze is geslaagd of mislukt.

Houd rekening met de impact van taakfouten op de taak en op eventuele taakafhankelijkheden. U kunt ExitConditions opgeven om acties voor afhankelijkheden en voor de taak te configureren.

  • DependencyAction bepaalt of taken moeten worden geblokkeerd of uitgevoerd die afhankelijk zijn van de mislukte taak.
  • JobAction bepaalt of de mislukte taak ervoor zorgt dat de taak wordt uitgeschakeld, beëindigd of gewijzigd.

Taakopdrachtregels

Taakopdrachtlijnen worden niet uitgevoerd onder een shell op rekenknooppunten, dus ze kunnen geen systeemeigen shell-functies gebruiken, zoals uitbreiding van omgevingsvariabelen. Als u van dergelijke functies wilt profiteren, moet u de shell in de opdrachtregel aanroepen. Zie Opdrachtregeluitbreiding van omgevingsvariabelen voor meer informatie.

Taakopdrachtregeluitvoer schrijft naar stderr.txt en stdout.txt bestanden. Uw toepassing kan ook schrijven naar toepassingsspecifieke logboekbestanden. Zorg ervoor dat u uitgebreide foutcontrole implementeert voor uw toepassing om snel problemen op te sporen en te diagnosticeren.

Taaklogboeken

Als het poolknooppunt waarop een taak is uitgevoerd, nog steeds bestaat, kunt u de taaklogboekbestanden ophalen en weergeven. Met verschillende API's kunt u taakbestanden weergeven en ophalen, zoals Bestand - Ophalen uit taak. U kunt ook logboekbestanden voor een taak of knooppunt weergeven met behulp van de Azure Portal.

  1. Selecteer bovenaan de pagina Overzicht voor een knooppunt de optie Batchlogboeken uploaden.

    Schermopname van een overzichtspagina van een knooppunt met Batchlogboeken uploaden gemarkeerd.

  2. Selecteer op de pagina Batch-logboeken uploadende optie Opslagcontainer kiezen, selecteer een Azure Storage-container om naar te uploaden en selecteer vervolgens Uploaden starten.

    Schermopname van de pagina Batchlogboeken uploaden.

  3. U kunt de logboeken bekijken, openen of downloaden vanaf de pagina van de opslagcontainer.

    Schermopname van taaklogboeken in een opslagcontainer.

Uitvoerbestanden

Omdat Batch-pools en poolknooppunten vaak kortstondig zijn, waarbij knooppunten continu worden toegevoegd en verwijderd, kunt u de logboekbestanden het beste opslaan wanneer de taak wordt uitgevoerd. Taakuitvoerbestanden zijn een handige manier om logboekbestanden op te slaan in Azure Storage. Zie Taakgegevens persistent maken in Azure Storage met de Batch-service-API voor meer informatie.

Bij elke bestandsupload schrijft Batch twee logboekbestanden naar het rekenknooppunt, fileuploadout.txt en fileuploaderr.txt. U kunt deze logboekbestanden bekijken voor meer informatie over een specifieke fout. Als het uploaden van het bestand niet is geprobeerd, bijvoorbeeld omdat de taak zelf niet kan worden uitgevoerd, bestaan deze logboekbestanden niet.

Volgende stappen