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 avslutas maxWallClockTimejobbet med egenskapen terminateReason inställd MaxWallClockTimeExpiry 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 anger MaxWallClockTimeExpiry om jobbet överskred det maxWallClockTime angivna i jobbbegränsningarna och därför jobbet avslutades. Den här egenskapen kan också anges till taskFailed om jobbets onTaskFailure attribut är inställt på performExitOptionsJobAction, och en aktivitet misslyckas med ett avslutningsvillkor som anger ett jobAction av terminatejob.

  • 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, exitCodeoch 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, exitCodeoch 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.

  1. Längst upp på sidan Översikt för en nod väljer du Ladda upp batchloggar.

    Skärmbild av en nodöversiktssida med Ladda upp batchloggar markerade.

  2. 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.

    Skärmbild av sidan Ladda upp batchloggar.

  3. Du kan visa, öppna eller ladda ned loggarna från lagringscontainersidan.

    Skärmbild av aktivitetsloggar i en lagringscontainer.

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