Azure Batch-jobb- och aktivitetsfel
Olika fel kan inträffa när du lägger till, schemalägger eller kör Azure Batch-jobb och -uppgifter. Det är enkelt att identifiera fel som uppstår när du lägger till jobb och uppgifter. API:et, kommandoraden eller användargränssnittet returnerar vanligtvis eventuella fel omedelbart. Den här artikeln beskriver hur du söker efter och hanterar fel som uppstår när jobb och uppgifter har skickats.
Jobbfel
Ett jobb är en grupp med en eller flera aktiviteter som anger vilka kommandorader som ska köras. Du kan ange följande valfria parametrar när du lägger till ett jobb. Dessa parametrar påverkar hur jobbet kan misslyckas.
JobConstraints. Du kan också använda
maxWallClockTime
egenskapen för att ange den maximala tiden som ett jobb kan vara aktivt eller körs. Om jobbet överskrider avslutasmaxWallClockTime
jobbet med egenskapenterminateReason
inställdMaxWallClockTimeExpiry
på i JobExecutionInformation.JobPreparationTask. Du kan också ange en jobbförberedelseaktivitet som ska köras på varje beräkningsnod som är schemalagd för att köra en jobbaktivitet. Noden kör jobbförberedelseaktiviteten innan den första gången den kör en uppgift för jobbet. Om jobbförberedelseaktiviteten misslyckas körs inte aktiviteten och jobbet slutförs inte.
JobReleaseTask. Du kan också ange en jobbversionsaktivitet för jobb som har en jobbförberedelseaktivitet. När ett jobb avslutas körs jobbversionsaktiviteten på varje poolnod som körde en jobbförberedelseaktivitet. Om en jobbversionsaktivitet misslyckas flyttas jobbet fortfarande till ett
completed
tillstånd.
I Azure-portalen kan du ange dessa parametrar i jobbhanteraren, förberedelse- och versionsaktiviteter och avancerade avsnitt på skärmen Batch Lägg till jobb .
Jobbegenskaper
Kontrollera följande jobbegenskaper i JobExecutionInformation efter fel:
Egenskapen
terminateReason
angerMaxWallClockTimeExpiry
om jobbet överskred detmaxWallClockTime
angivna i jobbbegränsningarna och därför jobbet avslutades. Den här egenskapen kan också anges tilltaskFailed
om jobbetsonTaskFailure
attribut är inställt påperformExitOptionsJobAction
, och en aktivitet misslyckas med ett avslutningsvillkor som anger ettjobAction
avterminatejob
.Egenskapen JobSchedulingError anges om det har uppstått ett schemaläggningsfel.
Jobbförberedelseuppgifter
En instans av en jobbförberedelseaktivitet körs på varje beräkningsnod första gången noden kör en uppgift för jobbet. Du kan se jobbförberedelseaktiviteten som en uppgiftsmall, där flera instanser körs, upp till antalet noder i en pool. Kontrollera jobbförberedelseaktivitetsinstanserna för att avgöra om det fanns fel.
Du kan använda API:et Job – List Preparation and Release Task Status för att visa körningsstatus för alla instanser av jobbförberedelser och versionsaktiviteter för ett angivet jobb. Precis som med andra uppgifter är JobPreparationTaskExecutionInformation tillgängligt med egenskaper som failureInfo
, exitCode
och result
.
När en jobbförberedelseaktivitet körs flyttas aktiviteten som utlöste jobbförberedelseaktiviteten till en taskState med preparing
. Om jobbförberedelseaktiviteten misslyckas återgår den utlösande aktiviteten till active
tillståndet och körs inte.
Om en jobbförberedelseaktivitet misslyckas körs inte den utlösande jobbaktiviteten. Jobbet slutförs inte och har fastnat. Om det inte finns några andra jobb med aktiviteter som kan schemaläggas kanske inte poolen används.
Uppgifter för jobbpubliceringen
En instans av en jobbpubliceringsaktivitet körs när jobbet avslutas på varje nod som körde en jobbförberedelseaktivitet. Kontrollera uppgiftsinstanserna för jobbutgivningen för att avgöra om det finns fel.
Du kan använda API:et Job – List Preparation and Release Task Status för att visa körningsstatus för alla instanser av jobbförberedelser och versionsaktiviteter för ett angivet jobb. Precis som med andra uppgifter är JobReleaseTaskExecutionInformation tillgängligt med egenskaper som failureInfo
, exitCode
och result
.
Om en eller flera jobbpubliceringsaktiviteter misslyckas avslutas jobbet fortfarande och flyttas till ett completed
tillstånd.
Aktivitetsfel
Jobbaktiviteter kan misslyckas av följande orsaker:
- Aktivitetskommandoraden misslyckas och returnerar med en icke-nollavslutskod.
- En eller flera
resourceFiles
angivna för en aktivitet laddas inte ned. - En eller flera
outputFiles
angivna för en aktivitet laddas inte upp. - Den förflutna tiden för aktiviteten överskrider den
maxWallClockTime
egenskap som anges i TaskConstraints.
Kontrollera i samtliga fall följande egenskaper efter fel och information om felen:
Egenskapen TaskExecutionInformation har flera egenskaper som ger information om ett fel. TaskExecutionResult anger om aktiviteten misslyckades av någon anledning och
exitCode
failureInfo
ger mer information om felet.Aktiviteten flyttas alltid till
completed
TaskState, oavsett om den lyckades eller misslyckades.
Överväg effekten av aktivitetsfel på jobbet och på eventuella aktivitetsberoenden. Du kan ange ExitConditions för att konfigurera åtgärder för beroenden och för jobbet.
- DependencyAction styr om aktiviteter som är beroende av den misslyckade aktiviteten ska blockeras eller köras.
- JobAction styr om den misslyckade aktiviteten gör att jobbet inaktiveras, avslutas eller ändras.
Aktivitetskommandorader
Aktivitetskommandorader körs inte under ett gränssnitt på beräkningsnoder, så de kan inte internt använda gränssnittsfunktioner som miljövariabelexpansion. Om du vill dra nytta av sådana funktioner måste du anropa gränssnittet på kommandoraden. Mer information finns i Kommandoradsexpansion av miljövariabler.
Aktivitetskommandoraden skriver till stderr.txt och stdout.txt filer. Ditt program kan också skriva till programspecifika loggfiler. Se till att implementera omfattande felkontroll för ditt program för att snabbt identifiera och diagnostisera problem.
Aktivitetsloggar
Om poolnoden som körde en aktivitet fortfarande finns kan du hämta och visa aktivitetsloggfilerna. Flera API:er tillåter att aktivitetsfiler listas och hämtas, till exempel Fil – Hämta från aktivitet. Du kan också lista och visa loggfiler för en aktivitet eller nod med hjälp av Azure-portalen.
Längst upp på sidan Översikt för en nod väljer du Ladda upp batchloggar.
På sidan Ladda upp Batch-loggar väljer du Välj lagringscontainer, väljer en Azure Storage-container att ladda upp till och väljer sedan Starta uppladdning.
Du kan visa, öppna eller ladda ned loggarna från lagringscontainersidan.
Utdatafiler
Eftersom Batch-pooler och poolnoder ofta är tillfälliga, med noder som kontinuerligt läggs till och tas bort, är det bäst att spara loggfilerna när jobbet körs. Utdatafiler för aktiviteter är ett praktiskt sätt att spara loggfiler i Azure Storage. Mer information finns i Spara uppgiftsdata till Azure Storage med Batch-tjänst-API:et.
Vid varje filuppladdning skriver Batch två loggfiler till beräkningsnoden, fileuploadout.txt och fileuploaderr.txt. Du kan undersöka loggfilerna för att lära dig mer om ett specifikt fel. Om filuppladdningen inte gjordes, till exempel på grund av att själva uppgiften inte kunde köras, finns inte dessa loggfiler.
Nästa steg
- Läs mer om Batch-jobb och uppgifter samt jobbförberedelser och lanseringsuppgifter.
- Läs mer om Batch-pool- och nodfel.