Dela via


Diagnostisera vanliga kodpaketfel med hjälp av Service Fabric

Den här artikeln beskriver vad det innebär att ett kodpaket avslutas oväntat. Den ger insikter om möjliga orsaker till vanliga felkoder, tillsammans med felsökningssteg.

När avslutas en process eller container oväntat?

När Azure Service Fabric tar emot en begäran om att starta ett kodpaket börjar den förbereda miljön i det lokala systemet enligt de alternativ som anges i app- och tjänstmanifesten. Dessa förberedelser kan omfatta att reservera nätverksslutpunkter eller resurser, konfigurera brandväggsregler eller konfigurera begränsningar för resursstyrning.

När miljön har konfigurerats korrekt försöker Service Fabric ta upp kodpaketet. Det här steget anses vara lyckat om operativsystemet eller containerns körning rapporterar att processen eller containern har aktiverats. Om aktiveringen misslyckas bör du se ett hälsomeddelande i SFX som liknar följande:

There was an error during CodePackage activation. Service host failed to activate. Error: 0xXXXXXXXX

När kodpaketet har aktiverats börjar Service Fabric övervaka dess livslängd. Nu kan en process eller container avslutas när som helst av flera orsaker. Det kan till exempel ha misslyckats med att initiera en DLL eller så kan operativsystemet ha slut på skrivbordshögutrymme. Om kodpaketet har avslutats bör du se följande hälsomeddelande i SFX:

The process/container terminated with exit code: XXXXXXXX. Please look at your application logs/dump or debug your code package for more details. For information about common termination errors, please visit https://aka.ms/service-fabric-termination-errors

Slutkoden i det här hälsomeddelandet är den enda ledtråden som processen eller containern ger om varför den avslutades. Det kan genereras av vilken nivå som helst av stacken. Den här slutkoden kan till exempel vara relaterad till ett OS-fel eller ett .NET-problem, eller så kan den ha genererats av din kod. Använd den här artikeln som utgångspunkt för att diagnostisera källan för avslutningsutgångskoder och möjliga lösningar. Men tänk på att det här är allmänna lösningar på vanliga scenarier och kanske inte gäller för det fel du ser.

Hur vet jag om Service Fabric har avslutat mitt kodpaket?

Service Fabric kan vara ansvarig för att avsluta kodpaketet av flera olika skäl. Den kan till exempel välja att placera kodpaketet på en annan nod i belastningsutjämningssyfte. Du kan kontrollera att Service Fabric avslutade kodpaketet om du ser någon av slutkoderna i följande tabell.

Anteckning

Om processen eller containern avslutas med en annan slutkod än koderna i följande tabell ansvarar Inte Service Fabric för att avsluta den.

Slutkod Beskrivning
7147 Anger att Service Fabric på ett smidigt sätt stänger av processen eller containern genom att skicka en Ctrl+C-signal.
7148 Anger att Service Fabric avslutade processen eller containern. Ibland anger den här felkoden att processen eller containern inte svarade i tid efter att ha skickat en Ctrl+C-signal och att den måste avslutas.

Andra vanliga felkoder och deras potentiella korrigeringar

Slutkod Hexadecimalt värde Kort beskrivning Rotorsak Potentiell korrigering
3221225794 0xc0000142 STATUS_DLL_INIT_FAILED Det här felet innebär ibland att datorn har slut på skrivbordshögutrymme. Den här orsaken är särskilt sannolik om du har flera processer som tillhör ditt program som körs på noden. Om programmet inte har skapats för att svara på Ctrl+C-signaler kan du aktivera inställningen EnableActivateNoWindow i klustermanifestet. Om du aktiverar den här inställningen körs kodpaketet utan ett GUI-fönster och får inte Ctrl+C-signaler. Den här åtgärden minskar också mängden skrivbords heaputrymme som varje process förbrukar. Om kodpaketet behöver ta emot Ctrl+C-signaler kan du öka storleken på nodens skrivbordshög.
3762504530 0xe0434352 Ej tillämpligt Det här värdet representerar felkoden för ett ohanterat undantag från hanterad kod (dvs. .NET). Den här slutkoden anger att ditt program utlöste ett undantag som förblir ohanterat och som avslutade processen. Som det första steget för att fastställa vad som utlöste det här felet kan du felsöka programmets loggar och dumpfiler.

Nästa steg