Zpracování a zjišťování chyb v Azure Batch

Někdy může být potřeba vyřešit selhání úloh a aplikací ve vašem Azure Batch řešení. Tento článek vysvětluje různé typy chyb služby Batch a způsob řešení běžných problémů.

Kódy chyb

Mezi obecné typy chyb, které se můžou ve službě Batch zobrazit, patří:

  • Selhání sítě u požadavků, které nikdy nedosáhly do služby Batch, nebo selhání sítí, když odpověď služby Batch nedorazí do klienta včas.
  • Vnitřní chyby serveru. Tyto chyby mají standardní 5xx stavový kód odpovědi HTTP.
  • Chyby související s omezováním Mezi tyto chyby patří 429 odpovědi HTTP se stavovým kódem nebo 503 s hlavičkou Retry-after .
  • 4xxAlreadyExists například a InvalidOperation. Tyto chyby značí, že prostředek není ve správném stavu pro přechod stavu.

Podrobné informace o konkrétních kódech chyb najdete v tématu Stavové kódy a kódy chyb služby Batch. Tento odkaz obsahuje kódy chyb pro rozhraní REST API, službu Batch a úlohy úloh a plánování.

Selhání aplikace

Během provádění může aplikace vytvořit výstup diagnostiky. Tento výstup můžete použít k řešení potíží. Služba Batch zapisuje standardní výstup a standardní chybový výstup do souborůstdout.txt a stderr.txt v adresáři úkolů na výpočetním uzlu. Další informace najdete v tématu Soubory a adresáře ve službě Batch.

Ke stažení těchto výstupních souborů použijte Azure Portal nebo některou ze sad SDK služby Batch. Pokud chcete například načíst soubory pro účely řešení potíží, v knihovně Batch .NET použijte ComputeNode.GetNodeFile a CloudTask.GetNodeFile .

Chyby úloh

Chyby úkolů spadají do několika kategorií.

Chyby předběžného zpracování

Pokud úkol se nepodaří spustit, nastaví se pro něj chyba předběžného zpracování. K chybám předběžného zpracování může dojít v následujících případech:

  • Soubory zdrojů úkolu byly přesunuty.
  • Účet úložiště už není dostupný.
  • Došlo k dalšímu problému, který zabránil úspěšnému kopírování souborů do uzlu.

Chyby nahrávání souborů

Pokud se soubory, které jste zadali pro úkol, z nějakého důvodu nepodaří nahrát, nastaví se pro úkol chyba nahrávání souboru. K chybám nahrávání souborů může dojít v následujících případech:

  • Token sdíleného přístupového podpisu (SAS) zadaný pro přístup k Azure Storage je neplatný.
  • Token SAS neposkytuje oprávnění k zápisu.
  • Účet úložiště už není dostupný.
  • Došlo k dalšímu problému, který zabránil úspěšnému kopírování souborů z uzlu.

Chyby aplikace

Selhat může i proces zadaný pomocí příkazového řádku úkolu. Další informace najdete v tématu Ukončovací kódy úloh.

V případě chyb aplikace nakonfigurujte službu Batch tak, aby se úloha automaticky opakovat až po zadaný počet opakování.

Chyby omezení

Pokud chcete zadat maximální dobu provádění úlohy nebo úkolu, nastavte maxWallClockTime omezení. Toto nastavení použijte k ukončení úloh, které se nedaří pokračovat.

Pokud úkol překročí maximální dobu:

  • Úkol je označen jako dokončený.
  • Ukončovací kód je nastavený na 0xC000013A.
  • Pole schedulingError je označené jako { category:"ServerError", code="TaskEnded"}.

Ukončovací kódy úkolů

Pokud úkol spustí proces, služba Batch vyplní vlastnost ukončovacího kódu úkolu návratovým kódem procesu. Pokud proces vrátí nenulový ukončovací kód, služba Batch označí úlohu jako neúspěšnou.

Služba Batch neurčuje ukončovací kód úkolu. Samotný proces nebo operační systém, ve kterém se proces spouští, určuje ukončovací kód.

Selhání nebo přerušení úloh

Úkoly mohou občas selhat nebo být přerušeny. Například:

  • Samotná aplikace úlohy může selhat.
  • Uzel, na kterém je úloha spuštěná, se může restartovat.
  • Operace změny velikosti může odebrat uzel z fondu. K této akci může dojít v případě, že zásady zrušení přidělení fondu okamžitě odeberou uzly bez čekání na dokončení úkolů.

Ve všech případech může služba Batch automaticky znovu nastavit úlohu do fronty ke spuštění na jiném uzlu.

Občasný problém také může způsobit, že úloha přestane reagovat nebo bude trvat příliš dlouho. Pro úlohu můžete nastavit maximální interval provádění. Pokud úkol překročí interval, služba Batch přeruší aplikaci úkolu.

Připojení k výpočetním uzlům

Ladění a řešení potíží můžete provést vzdáleným přihlášením k výpočetnímu uzlu. Pomocí Azure Portal stáhněte soubor protokolu RDP (Remote Desktop Protocol) pro uzly s Windows a získejte informace o připojení SSH (Secure Shell) pro uzly s Linuxem. Tyto informace si můžete stáhnout také pomocí rozhraní Api pro Batch .NET nebo Batch Python .

Pokud se chcete připojit k uzlu přes protokol RDP nebo SSH, nejprve na uzlu vytvořte uživatele. Použijte jednu z následujících metod:

V případě potřeby nakonfigurujte nebo zakažte přístup k výpočetním uzlům.

Řešení potíží s problémové uzly

Vaše klientská aplikace nebo služba Batch může prozkoumat metadata neúspěšných úkolů a identifikovat problémový uzel. Každý uzel ve fondu má jedinečné ID. Metadata úlohy zahrnují uzel, na kterém se úloha spouští. Po nalezení problémového uzlu zkuste selhání vyřešit pomocí následujících metod.

Restartování uzlu

Restartováním uzlu se někdy vyřeší latentní problémy, jako jsou zablokované nebo chybové procesy. Pokud váš fond používá spouštěcí úkol nebo úloha používá úkol přípravy úlohy, provede restartování uzlu tyto úkoly.

Obnovení uzlu z image

Při opětovném vytvoření uzlu se přeinstaluje operační systém. Spustit úkoly a úkoly přípravy úloh se znovu spustit po dokončení přepracování.

Odebrání uzlu z fondu

Odebrání uzlu z fondu je někdy nezbytné.

Zakázat plánování úkolů na uzlu

Zakázání plánování úkolů na uzlu ve skutečnosti přenese uzel do režimu offline. Služba Batch uzlu nepřiřazuje žádné další úkoly. Uzel ale bude ve fondu dál běžet. Pak můžete selhání dále prozkoumat, aniž byste přišli o data úlohy, která selhala. Uzel také nezpůsobí další selhání úloh.

Můžete například zakázat plánování úkolů na uzlu. Pak se vzdáleně přihlaste k uzlu. Prozkoumejte protokoly událostí a proveďte další řešení potíží. Po vyřešení problémů znovu povolte plánování úkolů, aby se uzel vrátil do online režimu.

Pomocí těchto akcí můžete určit, že služba Batch zpracovává úlohy, které jsou aktuálně spuštěné na uzlu. Pokud například zakážete plánování úkolů pomocí rozhraní Batch .NET API, můžete zadat hodnotu výčtu pro DisableComputeNodeSchedulingOption. Můžete se rozhodnout pro následující:

  • Ukončení spuštěných úloh: Terminate
  • Opětovné zařazení úkolů do fronty pro plánování na jiných uzlech: Requeue
  • Povolit dokončení spuštěných úloh před provedením akce: TaskCompletion

Opakování po chybách

Rozhraní API služby Batch vás upozorní na selhání. Všechna rozhraní API můžete zkusit zopakovat pomocí integrované globální obslužné rutiny opakování. Tuto možnost je vhodné použít.

Po selhání počkejte několik sekund, než to zkusíte znovu. Pokud to budete opakovat příliš často nebo příliš rychle, obslužná rutina opakování omezí požadavky.

Další kroky