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 vagy 503 állapotkódot tartalmazzák429.
  • 4xx hibák, mint például AlreadyExists a és InvalidOperationa. 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:

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.

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.

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.

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.

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.

Következő lépések