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čímaxWallClockTime
hodnotu , úloha se ukončí s vlastností nastavenouterminateReason
naMaxWallClockTimeExpiry
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čujeMaxWallClockTimeExpiry
, jestli úloha překročila zadanoumaxWallClockTime
v omezeních úlohy, a proto se úloha ukončila. Tuto vlastnost lze také nastavit nataskFailed
, pokud je atribut úlohyonTaskFailure
nastavený naperformExitOptionsJobAction
hodnotu a úloha selže s výstupní podmínkou, která určujejobAction
terminatejob
hodnotu .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 failureInfo
jsou , exitCode
a 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 failureInfo
jsou , exitCode
a 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
exitCode
failureInfo
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.
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ává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 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
- Přečtěte si další informace o úlohách a úkolech služby Batch aúkolech přípravy a vydávání úloh.
- Přečtěte si o chybách fondu služby Batch a uzlu.