Sdílet prostřednictvím


Diagnostika běžných chyb balíčků kódu pomocí Service Fabric

Tento článek popisuje, co znamená, že balíček kódu se neočekávaně ukončí. Poskytuje přehled o možných příčinách běžných kódů chyb spolu s kroky pro řešení potíží.

Kdy se proces nebo kontejner neočekávaně ukončí?

Když Azure Service Fabric obdrží požadavek na spuštění balíčku kódu, začne připravovat prostředí v místním systému podle možností nastavených v manifestech služby App and Service. Tyto přípravy můžou zahrnovat rezervaci koncových bodů sítě nebo prostředků, konfiguraci pravidel brány firewall nebo nastavení omezení zásad správného řízení prostředků.

Po správné konfiguraci prostředí se Service Fabric pokusí vyvolat balíček kódu. Tento krok se považuje za úspěšný, pokud operační systém nebo modul runtime kontejneru hlásí, že se proces nebo kontejner úspěšně aktivoval. Pokud aktivace není úspěšná, měla by se v SFX zobrazit zpráva o stavu podobná následující:

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

Po úspěšné aktivaci balíčku kódu začne Service Fabric monitorovat jeho životnost. V tomto okamžiku může proces nebo kontejner kdykoli ukončit z několika důvodů. Může se například stát, že se nepovedlo inicializovat knihovnu DLL nebo mohlo dojít k nedostatku místa na haldě plochy. Pokud se balíček kódu ukončil, měla by se v SFX zobrazit následující zpráva o stavu:

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

Ukončovací kód v této zprávě o stavu je jediným vodítkem, které proces nebo kontejner poskytuje o tom, proč se ukončil. Může být generována libovolnou úrovní zásobníku. Tento ukončovací kód může například souviset s chybou operačního systému nebo problémem s .NET nebo může být vyvolán vaším kódem. Tento článek slouží jako výchozí bod pro diagnostiku zdroje ukončačních kódů a možných řešení. Mějte ale na paměti, že se jedná o obecná řešení běžných scénářů a nemusí se vztahovat na chybu, která se vám zobrazuje.

Jak zjistím, jestli Service Fabric ukončil můj balíček kódu?

Service Fabric může být zodpovědný za ukončení balíčku kódu z různých důvodů. Může se například rozhodnout umístit balíček kódu do jiného uzlu pro účely vyrovnávání zatížení. Pokud se v následující tabulce zobrazí některý z ukončovacích kódů, můžete ověřit, že Service Fabric ukončil váš balíček kódu.

Poznámka:

Pokud se váš proces nebo kontejner ukončí s jiným ukončovacím kódem než kódy v následující tabulce, Service Fabric za jeho ukončení neodpovídá.

Ukončovací kód Popis
7147 Označuje, že Service Fabric řádně vypne proces nebo kontejner odesláním signálu Ctrl+C.
7148 Označuje, že Service Fabric ukončil proces nebo kontejner. Někdy tento kód chyby označuje, že proces nebo kontejner neodpověděl včas po odeslání signálu Ctrl+C a musel být ukončen.

Další běžné kódy chyb a jejich potenciální opravy

Ukončovací kód Šestnáctková hodnota Krátký popis Původní příčina Potenciální oprava
3221225794 0xc0000142 STATUS_DLL_INIT_FAILED Tato chyba někdy znamená, že na počítači dochází místo na haldě plochy. Tato příčina je zvlášť pravděpodobná, pokud máte řadu procesů, které patří vaší aplikaci spuštěné na uzlu. Pokud váš program nebyl sestaven tak, aby reagoval na signály Ctrl+C, můžete povolit nastavení EnableActivateNoWindow v manifestu clusteru. Povolení tohoto nastavení znamená, že balíček kódu se spustí bez okna grafického uživatelského rozhraní a nebude přijímat signály Ctrl+C. Tato akce také snižuje množství místa na haldě plochy, které jednotlivé procesy spotřebovávají. Pokud váš balíček kódu potřebuje přijímat signály Ctrl+C, můžete zvětšit velikost haldy plochy vašeho uzlu.
3762504530 0xe0434352 Tato hodnota představuje kód chyby pro neošetřenou výjimku ze spravovaného kódu (tj. .NET). Tento ukončovací kód označuje, že vaše aplikace vyvolala výjimku, která zůstává neošetřená a která proces ukončila. Jako první krok při určování toho, co tuto chybu aktivovalo, laděte protokoly a soubory výpisu paměti aplikace.

Další kroky