Hibakezelés és észlelés az Azure Batchben
Időnként előfordulhat, hogy a feladat- és alkalmazáshibákat kell kezelnie a Azure Batch megoldásban. Ez a cikk a Batch-hibák különböző típusait és a gyakori problémák megoldását ismerteti.
Hibakódok
A Batchben a következő általános típusú hibák jelenhetnek meg:
- Olyan kérések hálózati hibái, amelyek soha nem érték el a Batchet, vagy hálózati hibák, amikor a Batch-válasz nem érte el időben az ügyfelet.
- Belső kiszolgálóhibák. Ezek a hibák szabványos
5xx
állapotkódú HTTP-választ adnak. - Szabályozással kapcsolatos hibák. Ezek a hibák a fejlécet
Retry-after
tartalmazó HTTP-válaszokat vagy503
állapotkódot tartalmazzák429
. -
4xx
hibák, mint példáulAlreadyExists
a ésInvalidOperation
a. Ezek a hibák azt jelzik, hogy az erőforrás nem a megfelelő állapotban van az állapotváltáshoz.
Az egyes hibakódokkal kapcsolatos részletes információkért lásd: Batch állapot és hibakódok. Ez a hivatkozás a REST API, a Batch szolgáltatás, valamint a feladattevékenységek és az ütemezés hibakódjait tartalmazza.
Alkalmazáshibák
A végrehajtás során egy alkalmazás diagnosztikai kimenetet hozhat létre. Ezzel a kimenettel elháríthatja a problémákat. A Batch szolgáltatás szabványos kimenetet és standard hibakimenetet ír a számítási csomópont feladatkönyvtárában lévő stdout.txt és stderr.txt fájlokba. További információ: Fájlok és könyvtárak a Batchben.
A kimeneti fájlok letöltéséhez használja a Azure Portal vagy a Batch SDK-k egyikét. Ha például hibaelhárítási célból szeretne fájlokat lekérni, használja a ComputeNode.GetNodeFile és a CloudTask.GetNodeFile fájlt a Batch .NET-kódtárban.
Feladathibák
A tevékenységhibák több kategóriába sorolhatók.
Előfeldolgozási hibák
Ha egy tevékenység nem indul el, a tevékenységhez egy előfeldolgozási hiba lesz beállítva. Az előfeldolgozási hibák akkor fordulhatnak elő, ha:
- A tevékenység erőforrásfájljai át lettek helyezve.
- A tárfiók már nem érhető el.
- Egy másik hiba történt, amely megakadályozta a fájlok sikeres másolását a csomópontra.
Fájlfeltöltési hibák
Ha a tevékenységhez megadott fájlok bármilyen okból nem tölthetők fel, a rendszer fájlfeltöltési hibát ad meg a feladathoz. Fájlfeltöltési hibák akkor fordulhatnak elő, ha:
- Az Azure Storage eléréséhez megadott közös hozzáférésű jogosultságkód (SAS) jogkivonat érvénytelen.
- Az SAS-jogkivonat nem biztosít írási engedélyeket.
- A tárfiók már nem érhető el.
- Egy másik hiba történt, amely megakadályozta a fájlok sikeres másolását a csomópontról.
Alkalmazáshibák
A tevékenység parancssora által meghatározott folyamat is meghiúsulhat. További információ: Feladat kilépési kódjai.
Alkalmazáshibák esetén konfigurálja a Batchet úgy, hogy automatikusan újrapróbálkozott a feladatmal egy megadott számú alkalommal.
Kényszerhibák
Egy feladat vagy tevékenység maximális végrehajtási időtartamának megadásához állítsa be a kényszert maxWallClockTime
. Ezzel a beállítással leállítja azokat a feladatokat, amelyek nem haladnak.
Ha a tevékenység túllépi a maximális időt:
- A feladat befejezettként van megjelölve.
- A kilépési kód értéke
0xC000013A
. - Az schedulingError mező a következőként van megjelölve:
{ category:"ServerError", code="TaskEnded"}
.
Tevékenységek kilépési kódjai
Amikor a tevékenységek folyamatokat hajtanak végre, a Batch a folyamat visszatérési kódjával tölti ki a tevékenység kilépési kód tulajdonságát. Ha a folyamat nemero kilépési kódot ad vissza, a Batch szolgáltatás sikertelenként jelöli meg a feladatot.
A Batch szolgáltatás nem határozza meg egy tevékenység kilépési kódját. Maga a folyamat vagy az operációs rendszer, amelyen a folyamat fut, meghatározza a kilépési kódot.
Feladathibák vagy megszakítások
A tevékenységek időnként meghiúsulhatnak vagy megszakadhatnak. Például:
- Maga a feladatalkalmazás is meghiúsulhat.
- Az a csomópont, amelyen a feladat fut, újraindulhat.
- Az átméretezési művelet eltávolíthatja a csomópontot a készletből. Ez a művelet akkor fordulhat elő, ha a készlet felszabadítási szabályzata azonnal eltávolítja a csomópontokat anélkül, hogy a tevékenységek befejezésére várna.
A Batch minden esetben automatikusan újra lekérheti a feladatot egy másik csomóponton való végrehajtáshoz.
Előfordulhat, hogy egy időszakos probléma miatt a feladat nem válaszol, vagy túl sokáig tart a végrehajtás. A tevékenységek maximális végrehajtási időközét beállíthatja. Ha egy tevékenység túllépi az időközt, a Batch szolgáltatás megszakítja a feladatalkalmazást.
Csatlakozás számítási csomópontokhoz
A hibakeresést és a hibaelhárítást úgy végezheti el, ha távolról bejelentkezik egy számítási csomópontba. A Azure Portal segítségével letölthet egy Távoli asztali protokoll (RDP) fájlt a Windows-csomópontokhoz, és lekérte a Secure Shell(SSH) kapcsolati adatait a Linux-csomópontokhoz. Ezeket az információkat a Batch .NET vagy a Batch Python API-k használatával is letöltheti.
Ha RDP-n vagy SSH-n keresztül szeretne csatlakozni egy csomóponthoz, először hozzon létre egy felhasználót a csomóponton. Kövesse az alábbi módszerek egyikét:
- Az Azure Portal
- Batch REST API: adduser
- Batch .NET API: ComputeNode.CreateComputeNodeUser
- Batch Python-modul: add_user
Szükség esetén konfigurálja vagy tiltsa le a számítási csomópontokhoz való hozzáférést.
Problémacsomópontok hibaelhárítása
A Batch-ügyfélalkalmazás vagy -szolgáltatás megvizsgálhatja a sikertelen feladatok metaadatait a problémacsomópont azonosításához. A készlet minden csomópontja egyedi azonosítóval rendelkezik. A feladat metaadatai tartalmazzák azt a csomópontot, ahol a tevékenység fut. Miután megtalálta a problémás csomópontot, próbálkozzon az alábbi módszerekkel a hiba megoldásához.
Csomópont újraindítása
A csomópont újraindítása időnként megoldja a látens problémákat, például a elakadt vagy összeomlott folyamatokat. Ha a készlet indítási feladatot használ, vagy a feladat feladat-előkészítési feladatot használ, a csomópont újraindítása végrehajtja ezeket a feladatokat.
- Batch REST API: újraindítás
- Batch .NET API: ComputeNode.Reboot
Csomópont újraimázsa
A csomópont újraimálása újratelepíti az operációs rendszert. A feladatok és a feladat-előkészítési tevékenységek újrafuttatása az újraimálás után történik.
- Batch REST API: reimage
- Batch .NET API: ComputeNode.Reimage
Csomópont eltávolítása a készletből
Néha szükség van a csomópont eltávolítására a készletből.
- Batch REST API: removenodes
- Batch .NET API: PoolOperations
Feladatütemezés letiltása a csomóponton
Ha letiltja a feladatütemezést egy csomóponton, az offline állapotba helyezi a csomópontot. A Batch nem rendel további feladatokat a csomóponthoz. A csomópont azonban továbbra is fut a készletben. Ezután a sikertelen tevékenységek adatainak elvesztése nélkül tovább vizsgálhatja a hibákat. A csomópont emellett nem okoz további feladathibákat.
Tiltsa le például a feladatütemezést a csomóponton. Ezután jelentkezzen be távolról a csomópontra. Vizsgálja meg az eseménynaplókat, és végezze el az egyéb hibaelhárítást. A problémák megoldása után engedélyezze ismét a feladatütemezést a csomópont online állapotba helyezéséhez.
- Batch REST API: enablescheduling
- Batch .NET API: ComputeNode.EnableScheduling
Ezekkel a műveletekkel megadhatja, hogy a Batch kezeli-e a csomóponton jelenleg futó feladatokat. Ha például letiltja a feladatütemezést a Batch .NET API-val, megadhatja a DisableComputeNodeSchedulingOption enumerálási értékét. A következő lehetőségek közül választhat:
- Futtassa a feladatokat:
Terminate
- Feladatok ismételt lekérdezése más csomópontokon való ütemezéshez:
Requeue
- A művelet végrehajtása előtt engedélyezze a feladatok futtatását:
TaskCompletion
Újrapróbálkozás hibák után
A Batch API-k értesítik a hibákról. Az összes API-t újrapróbálhatja a beépített globális újrapróbálkozás-kezelővel. Ajánlott ezt a lehetőséget használni.
Hiba után várjon néhány másodpercet az újrapróbálkozás előtt. Ha túl gyakran vagy túl gyorsan próbálkozik újra, az újrapróbálkozási kezelő szabályozza a kéréseket.