Megosztás a következőn keresztül:


Gyakori kódcsomaghibák diagnosztizálása a Service Fabric használatával

Ez a cikk azt ismerteti, hogy mit jelent egy kódcsomag váratlan leállása. Betekintést nyújt a gyakori hibakódok lehetséges okaiba, valamint a hibaelhárítási lépésekbe.

Mikor fejeződik be váratlanul egy folyamat vagy tároló?

Amikor az Azure Service Fabric egy kódcsomag indítására vonatkozó kérést kap, megkezdi a környezet előkészítését a helyi rendszeren az App and Service jegyzékeiben megadott beállításoknak megfelelően. Ezek az előkészületek magukban foglalhatják a hálózati végpontok vagy erőforrások megőrzését, a tűzfalszabályok konfigurálását vagy az erőforrás-szabályozási korlátozások beállítását.

A környezet megfelelő konfigurálása után a Service Fabric megpróbálja létrehozni a kódcsomagot. Ez a lépés akkor tekinthető sikeresnek, ha az operációs rendszer vagy a tároló futtatókörnyezete azt jelenti, hogy a folyamat vagy tároló sikeresen aktiválódott. Ha az aktiválás sikertelen, az SFX-ben az alábbihoz hasonló állapotüzenetnek kell megjelennie:

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

A kódcsomag sikeres aktiválása után a Service Fabric megkezdi annak élettartamának monitorozását. Ezen a ponton egy folyamat vagy tároló több okból bármikor leállhat. Előfordulhat például, hogy nem sikerült inicializálni egy DLL-t, vagy az operációs rendszer elfogyhatott az asztali halomterületből. Ha a kódcsomag leállt, a következő állapotüzenetnek kell megjelennie az SFX-ben:

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

Az állapotüzenetben szereplő kilépési kód az egyetlen nyom, amelyről a folyamat vagy a tároló azt jelzi, hogy miért fejeződött be. A verem bármely szintje létrehozhatja. Ez a kilépési kód például egy operációsrendszer-hibához vagy egy .NET-hibához kapcsolódhat, vagy előfordulhat, hogy a kód felvetette. Ez a cikk kiindulópontként szolgál a megszüntetési kilépési kódok forrásának diagnosztizálásához és a lehetséges megoldásokhoz. Ne feledje azonban, hogy ezek általános megoldások a gyakori forgatókönyvekre, és előfordulhat, hogy nem vonatkoznak a megjelenő hibára.

Hogyan állapíthatom meg, hogy a Service Fabric leállítja-e a kódcsomagomat?

A Service Fabric több okból is felelős lehet a kódcsomag megszüntetéséért. Dönthet például úgy, hogy a kódcsomagot egy másik csomóponton helyezi el terheléselosztási célokra. Ellenőrizheti, hogy a Service Fabric leállítja-e a kódcsomagot, ha az alábbi táblázatban bármelyik kilépési kód megjelenik.

Feljegyzés

Ha a folyamat vagy tároló a következő táblázatban szereplő kódoktól eltérő kilépési kóddal fejeződik be, a Service Fabric nem felelős a megszüntetéséért.

Kilépési kód Leírás
7147 Azt jelzi, hogy a Service Fabric egy Ctrl+C jel elküldésével kecsesen leállítja a folyamatot vagy a tárolót.
7148 Azt jelzi, hogy a Service Fabric megszakította a folyamatot vagy a tárolót. Ez a hibakód néha azt jelzi, hogy a folyamat vagy tároló nem válaszolt időben a Ctrl+C jel elküldése után, és le kellett mondani.

Egyéb gyakori hibakódok és azok lehetséges javításai

Kilépési kód Hexadecimális érték Rövid leírás Gyökérok Lehetséges javítás
3221225794 0xc0000142 STATUS_DLL_INIT_FAILED Ez a hiba néha azt jelenti, hogy a gépnek elfogyott az asztali halomterülete. Ez az ok különösen akkor valószínű, ha számos olyan folyamat van, amely a csomóponton futó alkalmazáshoz tartozik. Ha a program nem a Ctrl+C jelekre való reagálásra készült, engedélyezheti az EnableActivateNoWindow beállítást a fürtjegyzékben. A beállítás engedélyezése azt jelenti, hogy a kódcsomag grafikus felhasználói felületi ablak nélkül fog futni, és nem fog Ctrl+C jeleket fogadni. Ez a művelet csökkenti az egyes folyamatok által felhasznált asztali halomterületet is. Ha a kódcsomagnak Ctrl+C jeleket kell fogadnia, növelheti a csomópont asztali halomméretét.
3762504530 0xe0434352 n/a Ez az érték a felügyelt kód (azaz .NET) nem kezelt kivételének hibakódját jelöli. Ez a kilépési kód azt jelzi, hogy az alkalmazás olyan kivételt okozott, amely kezeletlen maradt, és amely megszakította a folyamatot. A hiba kiváltó okának meghatározásának első lépéseként hibakeresést végezhet az alkalmazás naplóiban és memóriaképfájljaiban.

Következő lépések