Veelvoorkomende codepakketfouten diagnosticeren met behulp van Service Fabric

In dit artikel wordt beschreven wat het betekent voor het onverwacht beëindigen van een codepakket. Het biedt inzicht in mogelijke oorzaken van veelvoorkomende foutcodes, samen met stappen voor probleemoplossing.

Wanneer wordt een proces of container onverwacht beëindigd?

Wanneer Azure Service Fabric een aanvraag ontvangt om een codepakket te starten, wordt de omgeving voorbereid op het lokale systeem volgens de opties die zijn ingesteld in de App- en Service-manifesten. Deze voorbereidingen kunnen bestaan uit het reserveren van netwerkeindpunten of -resources, het configureren van firewallregels of het instellen van beperkingen voor resourcebeheer.

Nadat de omgeving correct is geconfigureerd, probeert Service Fabric het codepakket weer te geven. Deze stap wordt als geslaagd beschouwd als het besturingssysteem of de containerruntime meldt dat het proces of de container is geactiveerd. Als de activering mislukt, ziet u een statusbericht in SFX dat er ongeveer als volgt uitziet:

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

Nadat het codepakket is geactiveerd, begint Service Fabric met het bewaken van de levensduur. Op dit moment kan een proces of container om een aantal redenen op elk gewenst moment worden beëindigd. Het kan bijvoorbeeld zijn dat het initialiseren van een DLL is mislukt of dat het besturingssysteem onvoldoende bureaublad-heapruimte heeft. Als uw codepakket is beëindigd, ziet u het volgende statusbericht in 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

De afsluitcode in dit statusbericht is de enige aanwijzing die het proces of de container bevat over waarom het is beëindigd. Deze kan worden gegenereerd door elk niveau van de stack. Deze afsluitcode kan bijvoorbeeld betrekking hebben op een besturingssysteemfout of een .NET-probleem, of het kan zijn veroorzaakt door uw code. Gebruik dit artikel als uitgangspunt voor het diagnosticeren van de bron van afsluitcodes en mogelijke oplossingen. Houd er echter rekening mee dat dit algemene oplossingen zijn voor veelvoorkomende scenario's en mogelijk niet van toepassing zijn op de fout die u ziet.

Hoe weet ik of Service Fabric mijn codepakket heeft beëindigd?

Service Fabric kan om verschillende redenen verantwoordelijk zijn voor het beëindigen van uw codepakket. Er kan bijvoorbeeld worden besloten om het codepakket op een ander knooppunt te plaatsen voor taakverdelingsdoeleinden. U kunt controleren of Service Fabric uw codepakket heeft beëindigd als u een van de afsluitcodes in de volgende tabel ziet.

Notitie

Als uw proces of container wordt beëindigd met een andere afsluitcode dan de codes in de volgende tabel, is Service Fabric niet verantwoordelijk voor het beëindigen ervan.

Afsluitcode Description
7147 Geeft aan dat Service Fabric het proces of de container probleemloos afsluit door het een Ctrl+C-signaal te verzenden.
7148 Geeft aan dat Service Fabric het proces of de container heeft beëindigd. Soms geeft deze foutcode aan dat het proces of de container niet tijdig reageerde na het verzenden van een Ctrl+C-signaal en dat het moest worden beëindigd.

Andere veelvoorkomende foutcodes en hun mogelijke oplossingen

Afsluitcode Hexadecimale waarde Korte beschrijving Hoofdoorzaak Mogelijke oplossing
3221225794 0xc0000142 STATUS_DLL_INIT_FAILED Deze fout betekent soms dat de computer geen heap-ruimte meer heeft op het bureaublad. Deze oorzaak is met name waarschijnlijk als u talloze processen hebt die deel uitmaken van uw toepassing die op het knooppunt worden uitgevoerd. Als uw programma niet is gebouwd om te reageren op Ctrl+C-signalen, kunt u de instelling EnableActivateNoWindow inschakelen in het clustermanifest. Als u deze instelling inschakelt, wordt uw codepakket uitgevoerd zonder een GUI-venster en ontvangt u geen Ctrl+C-signalen. Deze actie vermindert ook de hoeveelheid heap-ruimte op het bureaublad die elk proces in beslag neemt. Als uw codepakket Ctrl+C-signalen moet ontvangen, kunt u de grootte van de desktop-heap van uw knooppunt vergroten.
3762504530 0xe0434352 N.v.t. Deze waarde vertegenwoordigt de foutcode voor een niet-verwerkte uitzondering van beheerde code (dat wil gezegd.NET). Deze afsluitcode geeft aan dat uw toepassing een uitzondering heeft gegenereerd die niet wordt verwerkt en die het proces heeft beëindigd. Als eerste stap om te bepalen wat deze fout heeft veroorzaakt, moet u fouten opsporen in de logboeken en dumpbestanden van uw toepassing.

Volgende stappen