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čí sterminateReason
vlastností nastavenouMaxWallClockTimeExpiry
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čujeMaxWallClockTimeExpiry
, zda úloha překročilamaxWallClockTime
zadané v omezeních úlohy a proto byla úloha ukončena. Tuto vlastnost lze také nastavittaskFailed
, pokud je atribut úlohyonTaskFailure
nastaven naperformExitOptionsJobAction
, a úkol selže s ukončovací podmínkou, která určujejobAction
hodnotuterminatejob
.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 failureInfo
je , exitCode
a 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 failureInfo
je , exitCode
a 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.
V horní části stránky Přehled uzlu vyberte Nahrát dávkové protokoly.
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í.
Protokoly můžete zobrazit, otevřít nebo stáhnout ze stránky 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
- Přečtěte si další informace o úlohách a úkolech služby Batch a přípravě a vydávání úloh.
- Přečtěte si informace o chybách fondu a uzlů služby Batch.