Sdílet prostřednictvím


Chyby úloh a úkolů služby Azure Batch

K různým chybám může dojít při přidávání, plánování nebo spouštění úloh a úloh služby Azure Batch. Je jednoduché rozpoznat chyby, ke kterým dochází při přidávání úloh a úkolů. Rozhraní API, příkazový řádek nebo uživatelské rozhraní obvykle okamžitě vrátí všechna selhání. Tento článek popisuje, jak zkontrolovat a zpracovat chyby, ke kterým dochází po odeslání úloh a úkolů.

Selhání úloh

Úloha je skupina jednoho nebo více úkolů, které určují příkazové řádky, které se mají spustit. Při přidávání úlohy můžete zadat následující volitelné parametry. Tyto parametry ovlivňují, jak může úloha selhat.

  • Omezení úloh. Volitelně můžete vlastnost použít maxWallClockTime k nastavení maximální doby, po kterou může být úloha aktivní nebo spuštěná. Pokud úloha překročí maxWallClockTime, úloha se ukončí s terminateReason vlastností nastavenou MaxWallClockTimeExpiry v JobExecutionInformation.

  • JobPreparationTask. Volitelně můžete zadat úlohu přípravy úlohy, která se má spustit na každém výpočetním uzlu naplánovaném pro spuštění úlohy. Uzel spustí úlohu přípravy úlohy před prvním spuštěním úkolu pro úlohu. Pokud se úkol přípravy úlohy nezdaří, úloha se nespustí a úloha se nedokončí.

  • JobReleaseTask. Volitelně můžete zadat úkol uvolnění úlohy pro úlohy, které mají úkol přípravy úlohy. Při ukončení úlohy se úloha uvolnění úlohy spustí na každém uzlu fondu, na kterém byl spuštěn úkol přípravy úlohy. Pokud úloha uvolnění úlohy selže, úloha se stále přesune do completed stavu.

Na webu Azure Portal můžete tyto parametry nastavit ve Správci úloh, úlohách přípravy a vydání a rozšířených částech obrazovky Přidat úlohu batch.

Vlastnosti úlohy

Zkontrolujte následující vlastnosti úlohy v JobExecutionInformation chyby:

  • Vlastnost terminateReason označuje MaxWallClockTimeExpiry , zda úloha překročila maxWallClockTime zadané v omezeních úlohy a proto byla úloha ukončena. Tuto vlastnost lze také nastavit taskFailed , pokud je atribut úlohy onTaskFailure nastaven na performExitOptionsJobAction, a úkol selže s ukončovací podmínkou, která určuje jobAction hodnotu terminatejob.

  • Vlastnost JobSchedulingError je nastavena, pokud došlo k chybě plánování.

Úkoly přípravy úloh

Instance úlohy přípravy úlohy se spustí na každém výpočetním uzlu při prvním spuštění úlohy. Úkol přípravy úlohy si můžete představit jako šablonu úkolu s několika spuštěnými instancemi až po počet uzlů ve fondu. Zkontrolujte instance úkolů přípravy úlohy a zjistěte, jestli nedošlo k chybám.

Pomocí rozhraní API stavu úkolů přípravy a uvolnění seznamu úloh můžete zobrazit seznam stavu spuštění všech instancí úkolů přípravy a uvolnění úlohy pro zadanou úlohu. Stejně jako u jiných úkolů je JobPreparationTaskExecutionInformation k dispozici s vlastnostmi, jako failureInfoje , exitCodea result.

Při spuštění úkolu přípravy úlohy se úkol, který aktivoval úkol přípravy úlohy, přesune do stavu úkolu preparing. Pokud úloha přípravy úlohy selže, aktivační úloha se vrátí do active stavu a nespustí se.

Pokud úloha přípravy úlohy selže, nespustí se úloha aktivační úlohy. Úloha se nedokončí a zasekne se. Pokud neexistují žádné jiné úlohy s úkoly, které je možné naplánovat, fond se nemusí použít.

Úlohy uvolnění úloh

Instance úlohy uvolnění úlohy se spustí, když je úloha ukončena na každém uzlu, na kterém byl spuštěn úkol přípravy úlohy. Zkontrolujte instance úloh uvolnění úloh a zjistěte, jestli nedošlo k chybám.

Pomocí rozhraní API stavu úkolů přípravy a uvolnění seznamu úloh můžete zobrazit seznam stavu spuštění všech instancí úkolů přípravy a uvolnění úlohy pro zadanou úlohu. Stejně jako u jiných úkolů je JobReleaseTaskExecutionInformation k dispozici s vlastnostmi, jako failureInfoje , exitCodea result.

Pokud jeden nebo více úloh uvolnění úlohy selže, úloha se stále ukončí a přesune se do completed stavu.

Selhání úloh

Úlohy můžou selhat z následujících důvodů:

  • Příkazový řádek úkolu selže a vrátí se nenulovým ukončovacím kódem.
  • resourceFiles Nejméně jeden zadaný úkol se nestahuje.
  • Jeden nebo více outputFiles zadaných pro úkol se nenahraje.
  • Uplynulý čas úkolu překračuje maxWallClockTime vlastnost zadanou v části Omezení úkolů.

Ve všechpřípadechch

  • TaskExecutionInformation vlastnost má více vlastností, které poskytují informace o chybě. TaskExecutionResult označuje, jestli úloha z nějakého důvodu selhala, a exitCode failureInfo poskytne další informace o selhání.

  • Úkol se vždy přesune do completed stavu úkolu bez ohledu na to, jestli byl úspěšný nebo neúspěšný.

Zvažte dopad selhání úkolů na úlohu a na všechny závislosti úkolů. Můžete zadat ExitConditions pro konfiguraci akcí pro závislosti a pro úlohu.

  • DependencyAction řídí, jestli se mají blokovat nebo spouštět úlohy, které závisí na neúspěšné úloze.
  • JobAction určuje, jestli neúspěšný úkol způsobí zakázání, ukončení úlohy nebo beze změny.

Příkazové řádky úkolů

Příkazové řádky úloh se nespouštějí pod prostředím na výpočetních uzlech, takže nemůžou nativně používat funkce prostředí, jako je rozšíření proměnné prostředí. Pokud chcete tyto funkce využít, musíte vyvolat prostředí na příkazovém řádku. Další informace naleznete v tématu Rozšíření příkazového řádku proměnných prostředí.

Výstup příkazového řádku úkolu se zapíše do stderr.txt a stdout.txt souborů. Aplikace může také zapisovat do souborů protokolu specifických pro aplikaci. Nezapomeňte implementovat komplexní kontrolu chyb pro vaši aplikaci, abyste mohli rychle zjišťovat a diagnostikovat problémy.

Protokoly úloh

Pokud uzel fondu, který spustil úlohu, stále existuje, můžete získat a zobrazit soubory protokolu úloh. Několik rozhraní API umožňuje výpis a získávání souborů úkolů, například Soubor – Získat z úkolu. Soubory protokolů pro úlohu nebo uzel můžete zobrazit také pomocí webu Azure Portal.

  1. V horní části stránky Přehled uzlu vyberte Nahrát dávkové protokoly.

    Snímek obrazovky se stránkou přehledu uzlu se zvýrazněnou možností Nahrát dávkové protokoly

  2. Na stránce Nahrát protokoly služby Batch vyberte Vybrat kontejner úložiště, vyberte kontejner služby Azure Storage, do které chcete nahrát, a pak vyberte Spustit nahrání.

    Snímek obrazovky se stránkou Nahrát dávkové protokoly

  3. Protokoly můžete zobrazit, otevřít nebo stáhnout ze stránky kontejneru úložiště.

    Snímek obrazovky s protokoly úloh v kontejneru úložiště

Výstupní soubory

Vzhledem k tomu, že fondy služby Batch a uzly fondu jsou často dočasné, protože uzly se průběžně přidávají a odstraňují, je nejlepší uložit soubory protokolu při spuštění úlohy. Výstupní soubory úloh představují pohodlný způsob ukládání souborů protokolu do Azure Storage. Další informace najdete v tématu Zachování dat úloh do služby Azure Storage pomocí rozhraní API služby Batch.

Při každém nahrání souboru služba Batch zapíše dva soubory protokolu do výpočetního uzlu, fileuploadout.txt a fileuploaderr.txt. V těchto souborech protokolu můžete prozkoumat další informace o konkrétním selhání. Pokud se o nahrání souboru nepokusilo, například protože samotný úkol se nepovedlo spustit, tyto soubory protokolu neexistují.

Další kroky