Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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. Dessa fel har ett HTTP-svar för standardstatuskoden
5xx. - Begränsningsrelaterade fel. Dessa fel inkluderar HTTP-svar med statuskod
429eller503ochRetry-afterheader. -
4xxfel somAlreadyExistsochInvalidOperation. 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.
Applikationsfel
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 utdatafilerna använder du Azure-portalen eller någon av Batch SDK:erna. Om du till exempel vill hämta filer för felsökning använder du ComputeNode.GetNodeFile och CloudTask.GetNodeFile i Batch .NET-biblioteket.
Uppgiftsfel
Aktivitetsfel finns i flera kategorier.
Förbearbetningsfel
Om en aktivitet inte startar 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 lyckad kopiering av filer till noden.
Filöverföringsfel
Om filer som du har angett för en aktivitet inte kan laddas upp av någon anledning anges ett filuppladdningsfel för aktiviteten. 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 lyckad kopiering av filer från noden.
Programfel
Processen som anges 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.
Begränsningsfel
Om du vill ange den maximala körningstiden för ett jobb eller en aktivitet anger du villkoret maxWallClockTime . Använd den här inställningen om du vill avsluta aktiviteter som inte kan fortsätta.
När aktiviteten överskrider den maximala tiden:
- Uppgiften är markerad som slutförd.
- Slutkoden är inställd på
0xC000013A. - Fältet schedulingError är markerat som
{ category:"ServerError", code="TaskEnded"}.
Aktivitetsavslutskoder
När en uppgift kör en process fyller Batch i uppgiftens exitkodsegenskap med processens returkod. Om processen returnerar en icke-nollavslutskod markerar Batch-tjänsten uppgiften som misslyckad.
Batch-tjänsten avgör 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. Till 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 deallokeringspolicy tar bort noder omedelbart utan att vänta på att uppgifterna ska slutföras.
I samtliga fall kan Batch automatiskt skicka uppgiften för utförande på en annan nod igen.
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 uppgift. 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 fjärranslutning. Använd Azure-portalen 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 ner den här informationen med Batch .NET eller Batch Python API:erna.
Om du vill ansluta till en nod via RDP eller SSH skapar du först en användare på noden. Använd någon av följande metoder:
- Azure Portal
- Batch REST API: adduser
- Batch .NET API: ComputeNode.CreateComputeNodeUser
- Batch Python-modul: add_user
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 kan du prova följande metoder för att lösa felet.
Omstartsnod
Omstart av en nod löser ibland latenta problem, till exempel fastnade eller kraschade processer. Om din pool använder en startaktivitet, eller om jobbet använder en jobbförberedelseaktivitet, kommer en omstart av noden att köra dessa uppgifter.
- Batch REST API: omstart
- Batch .NET API: ComputeNode.Reboot
Återställ noden
Om du återskapar en nod installeras operativsystemet om. Startaktiviteter och jobbförberedelseaktiviteter körs igen när ombildningen har inträffar.
- Rest-API för Batch: återskapa
- Batch .NET API: ComputeNode.Reimage
Ta bort nod från poolen
Ibland är det nödvändigt att ta bort noden från poolen.
- Batch REST API: removenodes
- Batch .NET API: PoolOperations
Inaktivera aktivitetsschemaläggning på nod
Om du inaktiverar aktivitetsschemaläggning på en nod kopplas noden 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.
- Batch REST API: enablescheduling
- Batch .NET API: ComputeNode.EnableScheduling
Du kan använda dessa åtgärder för att ange att Batch hanterar uppgifter som för närvarande 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 - Skicka arbetsuppgifter för schemaläggning på andra noder på nytt:
Requeue - Låt pågående aktiviteter slutföras innan åtgärden skall utföras:
TaskCompletion
Försök igen efter fel
Batch-API:erna meddelar dig om fel. Du kan försöka igen med alla API:er genom att använda den inbyggda globala återförsökshanteraren. Det är en bra idé 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 hanteraren begäranden.