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 meestal eventuele fouten 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 beïnvloeden hoe de taak kan mislukken.

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

  • JobPreparationTask. U kunt desgewenst een taakvoorbereidingstaak opgeven die moet worden uitgevoerd op elk rekenknooppunt dat is gepland voor het uitvoeren van een taaktaak. Het knooppunt voert de taakvoorbereidingstaak uit voordat deze voor het eerst een taak voor de taak uitvoert. Als de taakvoorbereidingstaak mislukt, wordt de taak niet uitgevoerd en wordt de taak niet voltooid.

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

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

Taakeigenschappen

Controleer de volgende taakeigenschappen in de JobExecutionInformation op fouten:

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

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

Jobvoorbereidingstaken

Een exemplaar van een taakvoorbereidingstaak wordt uitgevoerd op elk rekenknooppunt wanneer het knooppunt voor het eerst een taak voor de taak uitvoert. U kunt de taakvoorbereidingstaak beschouwen 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 JOB - List Preparation and Release Task Status API gebruiken om de uitvoeringsstatus van alle exemplaren van jobvoorbereiding 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 taakvoorbereidingstaak wordt uitgevoerd, wordt de taak die de taakvoorbereidingstaak heeft geactiveerd, verplaatst naar een taskState van preparing. Als de taakvoorbereidingstaak mislukt, wordt de activerende taak teruggezet naar de active status en wordt deze niet uitgevoerd.

Als een taakvoorbereidingstaak mislukt, wordt de triggertaak niet uitgevoerd. De taak wordt niet voltooid en blijft hangen. Als er geen andere taken zijn met taken die kunnen worden gepland, wordt de pool mogelijk niet gebruikt.

Taakreleasetaken

Een exemplaar van een taakreleasetaak wordt uitgevoerd wanneer de taak wordt beëindigd op elk knooppunt waarop een jobvoorbereidingstaak is uitgevoerd. Controleer de taakexemplaren van de jobrelease om te bepalen of er fouten zijn opgetreden.

U kunt de JOB - List Preparation and Release Task Status API gebruiken om de uitvoeringsstatus van alle exemplaren van jobvoorbereiding 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 taakreleasetaken 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 niet-nul afsluitcode.
  • Een of meer resourceFiles opgegeven voor een taak worden niet gedownload.
  • Een of meer outputFiles opgegeven voor een taak worden niet geüpload.
  • De verstreken tijd voor de taak overschrijdt de maxWallClockTime eigenschap die is opgegeven in de TaskConstraints.

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

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

  • De taak wordt altijd verplaatst naar de completed TaskState, 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 u taken wilt blokkeren of uitvoeren die afhankelijk zijn van de mislukte taak.
  • JobAction bepaalt of de mislukte taak ervoor zorgt dat de taak wordt uitgeschakeld, beëindigd of ongewijzigd.

Opdrachtregels voor taken

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

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

Taaklogboeken

Als het poolknooppunt dat een taak heeft uitgevoerd nog steeds bestaat, kunt u de logboekbestanden van de taak ophalen en weergeven. Verschillende API's staan het weergeven en ophalen van taakbestanden toe, zoals Bestand - Ophalen uit taak. U kunt ook logboekbestanden voor een taak of knooppunt weergeven met behulp van Azure Portal.

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

    Schermopname van een overzichtspagina van een knooppunt met Batch-logboeken uploaden gemarkeerd.

  2. Selecteer op de pagina Batch-logboeken uploaden de 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 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 behouden in Azure Storage met de Batch-service-API voor meer informatie.

Bij het uploaden van bestanden 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