Dela via


Hantering och identifiering av fel i Azure Batch

Ibland kan du behöva hantera aktivitets- och programfel i din Azure Batch lösning. Den här artikeln beskriver olika typer av Batch-fel och hur du löser vanliga problem.

Felkoder

Några allmänna typer av fel som du kan se i Batch är:

  • Nätverksfel för begäranden som aldrig nådde Batch eller nätverksfel när Batch-svaret inte nådde klienten i tid.
  • Interna serverfel. De här felen har ett HTTP-svar med standardstatuskod 5xx .
  • Begränsningsrelaterade fel. Dessa fel inkluderar 429 eller 503 statuskod HTTP-svar med Retry-after huvudet.
  • 4xx fel som AlreadyExists och InvalidOperation. Dessa fel indikerar att resursen inte är i rätt tillstånd för tillståndsövergången.

Detaljerad information om specifika felkoder finns i Batch-status och felkoder. Den här referensen innehåller felkoder för REST API, Batch-tjänsten och för jobbuppgifter och schemaläggning.

Programfel

Under körningen kan ett program generera diagnostiska utdata. Du kan använda dessa utdata för att felsöka problem. Batch-tjänsten skriver standardutdata och standardfelutdata till stdout.txt - och stderr.txt-filerna i aktivitetskatalogen på beräkningsnoden. Mer information finns i Filer och kataloger i Batch.

Om du vill ladda ned dessa utdatafiler använder du Azure Portal eller någon av Batch-SDK:erna. Om du till exempel vill hämta filer i felsökningssyfte använder du ComputeNode.GetNodeFile och CloudTask.GetNodeFile i Batch .NET-biblioteket.

Aktivitetsfel

Aktivitetsfel hamnar i flera kategorier.

Förbearbetningsfel

Om det inte går att starta en aktivitet anges ett förbearbetningsfel för aktiviteten. Förbearbetningsfel kan inträffa om:

  • Aktivitetens resursfiler har flyttats.
  • Lagringskontot är inte längre tillgängligt.
  • Ett annat problem inträffade som förhindrade en lyckad kopiering av filer till noden.

Filuppladdningsfel

Om filer som du har angett för en aktivitet inte kan laddas upp av någon anledning anges ett filöverföringsfel för uppgiften. Filuppladdningsfel kan inträffa om:

  • Den SAS-token (signatur för delad åtkomst) som angetts för åtkomst till Azure Storage är ogiltig.
  • SAS-token ger inte skrivbehörighet.
  • Lagringskontot är inte längre tillgängligt.
  • Ett annat problem inträffade som förhindrade en lyckad kopiering av filer från noden.

Programfel

Processen som definieras av aktivitetens kommandorad kan också misslyckas. Mer information finns i Aktivitetsavslutskoder.

För programfel konfigurerar du Batch för att automatiskt försöka utföra uppgiften igen upp till ett angivet antal gånger.

Villkorsfel

Ange den maximala körningstiden för ett jobb eller en aktivitet genom att ange villkoret maxWallClockTime . Använd den här inställningen om du vill avsluta aktiviteter som inte kan utföras.

När aktiviteten överskrider den maximala tiden:

  • Uppgiften markeras som slutförd.
  • Slutkoden är inställd på 0xC000013A.
  • Fältet schedulingError är markerat som { category:"ServerError", code="TaskEnded"}.

Slutkoder för aktiviteter

När en aktivitet kör en process lägger Batch till processens returkod i aktivitetens slutkodsegenskap. Om processen returnerar en icke-nollavslutskod markerar Batch-tjänsten uppgiften som misslyckad.

Batch-tjänsten fastställer inte en aktivitets slutkod. Själva processen, eller operativsystemet som processen körs på, avgör slutkoden.

Aktivitetsfel eller avbrott

Aktiviteter kan ibland misslyckas eller avbrytas. Ett exempel:

  • Själva aktivitetsprogrammet kan misslyckas.
  • Noden som aktiviteten körs på kan startas om.
  • En storleksändringsåtgärd kan ta bort noden från poolen. Den här åtgärden kan inträffa om poolens frigöringsprincip tar bort noder omedelbart utan att vänta på att aktiviteterna ska slutföras.

I samtliga fall kan Batch automatiskt skicka om uppgiften för körning på en annan nod.

Det är också möjligt att ett tillfälligt problem gör att en uppgift slutar svara eller tar för lång tid att köra. Du kan ange ett maximalt körningsintervall för en aktivitet. Om en aktivitet överskrider intervallet avbryter Batch-tjänsten aktivitetsprogrammet.

Ansluta till beräkningsnoder

Du kan utföra felsökning och felsökning genom att logga in på en beräkningsnod via en fjärranslutning. Använd Azure Portal för att ladda ned en RDP-fil (Remote Desktop Protocol) för Windows-noder och hämta SSH-anslutningsinformation (Secure Shell) för Linux-noder. Du kan också ladda ned den här informationen med hjälp av Batch .NET - eller Batch Python-API :er.

Om du vill ansluta till en nod via RDP eller SSH skapar du först en användare på noden. Använd en av följande metoder:

Om det behövs konfigurerar eller inaktiverar du åtkomst till beräkningsnoder.

Felsöka problemnoder

Batch-klientprogrammet eller -tjänsten kan undersöka metadata för misslyckade uppgifter för att identifiera en problemnod. Varje nod i en pool har ett unikt ID. Uppgiftsmetadata innehåller noden där en aktivitet körs. När du har hittat problemnoden provar du följande metoder för att lösa felet.

Omstartsnod

Omstart av en nod åtgärdar ibland latenta problem, till exempel fastnade eller kraschade processer. Om poolen använder en startaktivitet, eller om jobbet använder en jobbförberedelseaktivitet, kör en nodomstart dessa uppgifter.

Ändra storlek på noden

Om du återskapar en nod installeras operativsystemet om. Startaktiviteter och jobbförberedelseaktiviteter körs igen när omimeringen har inträffar.

Ta bort noden från poolen

Ibland är det nödvändigt att ta bort noden från poolen.

Inaktivera aktivitetsschemaläggning på nod

Om du inaktiverar schemaläggning av aktiviteter på en nod kopplas noden effektivt från. Batch tilldelar inga ytterligare uppgifter till noden. Noden fortsätter dock att köras i poolen. Du kan sedan undersöka felen ytterligare utan att förlora den misslyckade aktivitetens data. Noden orsakar inte heller fler aktivitetsfel.

Inaktivera till exempel aktivitetsschemaläggning på noden. Logga sedan in på noden via fjärranslutning. Granska händelseloggarna och utför annan felsökning. När du har löst problemen aktiverar du aktivitetsschemaläggning igen för att få noden online igen.

Du kan använda dessa åtgärder för att ange batchreferenser som körs på noden. När du till exempel inaktiverar aktivitetsschemaläggning med Batch .NET API kan du ange ett uppräkningsvärde för DisableComputeNodeSchedulingOption. Du kan välja att:

  • Avsluta aktiviteter som körs: Terminate
  • Fråga om uppgifter för schemaläggning på andra noder: Requeue
  • Tillåt att aktiviteter som körs slutförs innan åtgärden utförs: TaskCompletion

Försök igen efter fel

Batch-API:erna meddelar dig om fel. Du kan försöka igen med hjälp av den inbyggda globala återförsökshanteraren. Det är bästa praxis att använda det här alternativet.

Efter ett fel väntar du flera sekunder innan du försöker igen. Om du försöker igen för ofta eller för snabbt begränsar återförsökshanteraren begäranden.

Nästa steg