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 overschrijdtmaxWallClockTime
, wordt de taak beëindigd met determinateReason
eigenschap die is ingesteldMaxWallClockTimeExpiry
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 aanMaxWallClockTimeExpiry
of de taak demaxWallClockTime
opgegeven taakbeperkingen heeft overschreden en daarom de taak is beëindigd. Deze eigenschap kan ook worden ingesteldtaskFailed
als het kenmerk vanonTaskFailure
de taak is ingesteld opperformExitOptionsJobAction
, en een taak mislukt met een afsluitvoorwaarde die eenjobAction
vanterminatejob
.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
, exitCode
en 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
, exitCode
en 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.
Selecteer bovenaan de pagina Overzicht voor een knooppunt de optie Batchlogboeken uploaden.
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.
U kunt de logboeken bekijken, openen of downloaden vanaf de pagina 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
- Meer informatie over Batch-taken en -taken en taakvoorbereidings- en releasetaken.
- Meer informatie over Batch-pool- en knooppuntfouten.