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
- Přečtěte si další informace o diagnostice dalších běžných scénářů.
- Podrobnější přehled protokolů služby Azure Monitor a jejich nabídky najdete v přehledu služby Azure Monitor.
- Přečtěte si další informace o upozorňování protokolů služby Azure Monitor pro pomoc při detekci a diagnostice.
- Seznamte se s funkcemi prohledávání protokolů a dotazování nabízenými jako součást protokolů služby Azure Monitor.