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
- További információ az egyéb gyakori forgatókönyvek diagnosztizálásáról.
- Az Azure Monitor áttekintésének elolvasásával részletesebb áttekintést kaphat az Azure Monitor-naplókról és az általuk kínált szolgáltatásokról.
- További információ az Azure Monitor-naplókról, amelyek segítséget küldenek az észleléshez és a diagnosztikához.
- Ismerkedjen meg az Azure Monitor-naplók részeként kínált naplókeresési és lekérdezési funkciókkal.