Sdílet prostřednictvím


Azure Batch chyb úloh a úkolů

Při přidávání, plánování nebo spouštění Azure Batch úloh a úloh může dojít k různým chybám. Detekce chyb, ke kterým dochází při přidávání úloh a úkolů, je jednoduché. Rozhraní API, příkazový řádek nebo uživatelské rozhraní obvykle okamžitě vrátí případná 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čí maxWallClockTimehodnotu , úloha se ukončí s vlastností nastavenou terminateReason na 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 úlohy. Pokud úloha přípravy úlohy selže, úloha se nespustí a úloha se nedokončí.

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

V Azure Portal můžete tyto parametry nastavit ve správci úloh, v úlohách přípravy a vydání a v části Upřesnit na obrazovce úlohy Batch Přidat.

Vlastnosti úlohy

Zkontrolujte chyby v následujících vlastnostech úlohy v jobexecutionInformation :

  • Vlastnost terminateReason označuje MaxWallClockTimeExpiry , jestli úloha překročila zadanou maxWallClockTime v omezeních úlohy, a proto se úloha ukončila. Tuto vlastnost lze také nastavit na taskFailed , pokud je atribut úlohy onTaskFailure nastavený na performExitOptionsJobActionhodnotu a úloha selže s výstupní podmínkou, která určuje jobActionterminatejobhodnotu .

  • 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. Úlohu přípravy úlohy si můžete představit jako šablonu úkolu se spuštěným více instancemi až do počtu uzlů ve fondu. Zkontrolujte instance úloh přípravy úlohy a zjistěte, jestli nedošlo k chybám.

Pomocí rozhraní API úlohy – Příprava seznamu a stav úlohy vydané verze můžete vypsat stav spuštění všech instancí úkolů přípravy a uvolnění úlohy pro konkrétní úlohu. Stejně jako u jiných úloh je jobPreparationTaskExecutionInformation k dispozici s vlastnostmi, jako failureInfojsou , exitCodea result.

Při spuštění úkolu přípravy úlohy se úloha, která aktivovala úlohu přípravy úlohy, přesune do stavupreparingúkolu . 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, aktivační úloha úlohy se nespustí. Úloha se nedokončí a zablokuje se. Pokud s úkoly, které by bylo možné naplánovat, neexistují žádné jiné úlohy, nemusí se fond použít.

Úlohy uvolnění úloh

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

Pomocí rozhraní API úlohy – Příprava seznamu a stav úlohy vydané verze můžete vypsat stav spuštění všech instancí úkolů přípravy a uvolnění úlohy pro konkrétní úlohu. Stejně jako u jiných úloh je jobReleaseTaskExecutionInformation k dispozici s vlastnostmi, jako failureInfojsou , exitCodea result.

Pokud jeden nebo více úloh uvolnění úlohy selže, úloha se stále ukončí a přesune completed se do 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 s nenulovým ukončovacím kódem.
  • Jeden nebo více resourceFiles zadaných pro úkol se nestahuje.
  • Jeden nebo více outputFiles zadaných pro úkol se nenahraje.
  • Uplynulý čas úkolu překračuje vlastnost zadanou maxWallClockTime v omezeních úkolů.

Ve všech případech zkontrolujte chyby a informace o chybách v následujících vlastnostech:

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

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

Zvažte dopad selhání úkolů na úlohu a na všechny závislosti úkolů. Zadáním možnosti ExitConditions můžete nakonfigurovat akce pro závislosti a pro úlohu.

  • DependencyAction určuje, jestli se mají blokovat nebo spouštět úlohy, které závisí na neúspěšné úloze.
  • JobAction určuje, jestli neúspěšná úloha způsobí, že úloha bude zakázaná, ukončená nebo nezměněná.

Příkazové řádky úkolů

Příkazové řádky úloh se nespouštějí v prostředí 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 v příkazovém řádku vyvolat prostředí. Další informace najdete v tématu Rozšíření proměnných prostředí na příkazovém řádku.

Výstup příkazového řádku úkolu zapisuje do souborůstderr.txt a stdout.txt . Vaše aplikace může také zapisovat do souborů protokolu specifických pro aplikaci. Nezapomeňte implementovat komplexní kontrolu chyb, aby vaše aplikace okamžitě detekoval a diagnostikoval problémy.

Protokoly úloh

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

  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ává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 a uzly fondu služby Batch jsou často dočasné a 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, jak ukládat soubory protokolů do služby 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 do výpočetního uzlu dva soubory protokolu ,fileuploadout.txt a fileuploaderr.txt. Další informace o konkrétním selhání najdete v těchto souborech protokolu. Pokud se nepokusili nahrát soubor, například proto, že se nepodařilo spustit samotnou úlohu, tyto soubory protokolu neexistují.

Další kroky