Diagnostisera vanliga kodpaketfel med hjälp av Service Fabric
I den här artikeln beskrivs vad det innebär att ett kodpaket oväntat avslutas. 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 containerkörningen 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. I det här läget kan en process eller container när som helst avslutas 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 avslutade 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.
Kommentar
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 korrekt 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 skrivbordshögutrymme 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 programmet utlöste ett undantag som förblir ohanterat och som avslutade processen. Som det första steget för att avgöra vad som utlöste det här felet kan du felsöka programmets loggar och dumpfiler. |
Nästa steg
- Läs mer om att diagnostisera andra vanliga scenarier.
- Få en mer detaljerad översikt över Azure Monitor-loggar och vad de erbjuder genom att läsa Översikt över Azure Monitor.
- Läs mer om Aviseringar om Azure Monitor-loggar för hjälp med identifiering och diagnostik.
- Bekanta dig med loggsöknings - och frågefunktionerna som erbjuds som en del av Azure Monitor-loggarna.