Share via


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 inträffar 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. De här parametrarna påverkar hur jobbet kan misslyckas.

  • JobConstraints. Du kan också använda maxWallClockTime egenskapen för att ange hur lång tid ett jobb kan vara aktivt eller körs. Om jobbet överskrider avslutas maxWallClockTimejobbet med terminateReason egenskapen 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 att köra en jobbaktivitet. Noden kör jobbförberedelseaktiviteten innan den första gången den kör en aktivitet för jobbet. Om jobbförberedelseaktiviteten misslyckas körs inte aktiviteten och jobbet slutförs inte.

  • JobReleaseTask. Du kan också ange en jobbpubliceringsaktivitet för jobb som har en jobbförberedelseaktivitet. När ett jobb avslutas körs jobbpubliceringsaktiviteten på varje poolnod som körde en jobbförberedelseaktivitet. Om en jobbpubliceringsaktivitet misslyckas flyttas jobbet fortfarande till ett completed tillstånd.

I Azure Portal 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 som anges 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 en jobAction av terminatejob.

  • Egenskapen JobSchedulingError anges om det har uppstått ett schemaläggningsfel.

Jobbförberedelseaktiviteter

En instans av en jobbförberedelseaktivitet körs på varje beräkningsnod första gången noden kör en aktivitet för jobbet. Du kan betrakta 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örberedelse- 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 taskStatepreparing. 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 poolen inte 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 instanserna av jobbpubliceringar för att se 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örberedelse- 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 returneras med en slutkod som inte är noll.
  • 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.

I samtliga fall kontrollerar du följande egenskaper för 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 exitCodefailureInfo ger mer information om felet.

  • Uppgiften flyttas alltid till completedTaskState, 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 expansion av miljövariabler. 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 Arkiv – Hämta från aktivitet. Du kan också visa och visa loggfiler för en aktivitet eller nod med hjälp av Azure Portal.

  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 Överför 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 läggs till och tas bort kontinuerligt, ä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