Veelvoorkomende fouten in codepakketten diagnosticeren met behulp van Service Fabric
In dit artikel wordt beschreven wat het betekent dat een codepakket onverwacht wordt beëindigd. 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 op het lokale systeem voorbereid op basis van 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 rapporteert 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 niet zijn gelukt om een DLL-bestand te initialiseren of het besturingssysteem kan onvoldoende bureaublad-heapruimte hebben. 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 dat het proces of de container geeft waarom het is beëindigd. Het kan worden gegenereerd door elk niveau van de stack. Deze afsluitcode kan bijvoorbeeld betrekking hebben op een besturingssysteemfout of een .NET-probleem, of deze is mogelijk gegenereerd door uw code. Gebruik dit artikel als uitgangspunt voor het diagnosticeren van de bron van afsluitcodes voor beëindiging en mogelijke oplossingen. Houd er echter rekening mee dat dit algemene oplossingen zijn voor veelvoorkomende scenario's en mogelijk niet van toepassing is 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. Het kan bijvoorbeeld besluiten 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 | Beschrijving |
---|---|
7147 | Geeft aan dat Service Fabric het proces of de container correct 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 heeft gereageerd na het verzenden van een Ctrl+C-signaal en dat het moest worden beëindigd. |
Andere veelvoorkomende foutcodes en de mogelijke oplossingen
Afsluitcode | Hexadecimale waarde | Korte beschrijving | Hoofdoorzaak | Mogelijke oplossing |
---|---|---|---|---|
3221225794 | 0xc0000142 | STATUS_DLL_INIT_FAILED | Deze fout betekent soms dat de computer onvoldoende ruimte op het bureaublad heeft. 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 heapruimte die elk proces verbruikt. Als uw codepakket Ctrl+C-signalen moet ontvangen, kunt u de grootte van de bureaublad-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 waardoor het proces is beëindigd. Als eerste stap bij het bepalen wat deze fout heeft geactiveerd, kunt u fouten opsporen in de logboeken en dumpbestanden van uw toepassing. |
Volgende stappen
- Meer informatie over het diagnosticeren van andere veelvoorkomende scenario's.
- Bekijk een gedetailleerder overzicht van Azure Monitor-logboeken en wat ze bieden door het azure Monitor-overzicht te lezen.
- Meer informatie over waarschuwingen voor Azure Monitor-logboeken voor hulp bij detectie en diagnose.
- Maak kennis met de functies voor zoeken in logboeken en query's die worden aangeboden als onderdeel van Azure Monitor-logboeken.