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ékfájljaiban megadott beállításoknak megfelelően. Ilyen előkészület lehet például a hálózati végpontok vagy erőforrások lefoglalása, a tűzfalszabályok konfigurálása vagy az erőforrás-szabályozási korlátozások beállítása.

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 arról számol be, hogy a folyamat vagy a tároló sikeresen aktiválva lett. 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 rendszernek elfogyhatott az asztali halomterülete. 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, amelyet a folyamat vagy a tároló biztosít a leállási okáról. A verem bármely szintje létrehozható. Ez a kilépési kód például egy operációsrendszer-hibához vagy egy .NET-problémához kapcsolódhat, vagy a kód generálta. Ez a cikk kiindulópontként szolgál a lezárá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 tapasztalt 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 leállításáért. Dönthet például úgy, hogy a kódcsomagot egy másik csomópontra helyezi terheléselosztás céljából. Ellenőrizheti, hogy a Service Fabric leállítja-e a kódcsomagot, ha a kilépési kódok bármelyikét látja az alábbi táblázatban.

Megjegyzés

Ha a folyamat vagy a 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 leállításáért.

Kilépési kód Description
7147 Azt jelzi, hogy a Service Fabric egy Ctrl+C jel küldésével szabályosan leállítja a folyamatot vagy a tárolót.
7148 Azt jelzi, hogy a Service Fabric leállított egy folyamatot vagy tárolót. Néha ez a hibakód 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 zárni.

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 folyamat fut a csomóponton futó alkalmazáshoz. Ha a program nem a Ctrl+C jelekre való reagálásra lett létrehozva, 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 kap Ctrl+C jeleket. 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 halommemória méretét.
3762504530 0xe0434352 N/A Ez az érték egy felügyelt kódból (azaz .NET-ből) származó nem kezelt kivétel hibakódját jelöli. Ez a kilépési kód azt jelzi, hogy az alkalmazás olyan kivételt okozott, amely továbbra is kezeletlen marad, é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