Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Někdy možná budete muset zpracovávat selhání úloh a aplikací v řešení Azure Batch. 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 zobrazit ve službě Batch, patří:
- Síťové chyby u požadavků, které nikdy nedosáhly ke službě Batch, nebo síťová selhání, když odpověď Batch nedorazila včas ke klientovi.
- Vnitřní chyby serveru Tyto chyby mají standardní HTTP odpověď stavového kódu
5xx. - Chyby související s omezováním Mezi tyto chyby patří HTTP odpovědi se stavovým kódem
429a hlavičkou503Retry-after. -
4xxchyby, jako jsouAlreadyExistsaInvalidOperation. 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 Stav služby Batch a kódy chyb. Tento odkaz obsahuje kódy chyb pro rozhraní REST API, službu Batch a pro úlohy a plánování úloh.
Selhání aplikace
Během provádění může aplikace vytvořit diagnostický výstup. Tento výstup můžete použít k řešení problémů. Služba Batch zapíše standardní výstup a standardní chybový výstup do souborůstdout.txt a stderr.txt v adresáři úloh na výpočetním uzlu. Další informace najdete v tématu Soubory a adresáře ve službě Batch.
Pokud chcete tyto výstupní soubory stáhnout, 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íží, použijte computeNode.GetNodeFile a CloudTask.GetNodeFile v knihovně Batch .NET.
Chyby úkolů
Chyby úkolů spadají do několika kategorií.
Chyby předběžného zpracování
Pokud se úkolu nepodaří spustit, nastaví se pro úkol 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 se přesunuly.
- Účet úložiště už není k dispozici.
- 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 soubory, které jste zadali pro úlohu, se 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 ke službě Azure Storage je neplatný.
- Token SAS neposkytuje oprávnění k zápisu.
- Účet úložiště už není k dispozici.
- Došlo k dalšímu problému, který zabránil úspěšnému kopírování souborů z uzlu.
Chyby aplikace
Proces určený příkazovým řádkem úkolu může také selhat. Další informace naleznete v tématu Ukončovací kódy úkolů.
V případě chyb aplikace nakonfigurujte službu Batch tak, aby automaticky zkusila úlohu až do zadaného počtu opakování.
Chyby omezení
Chcete-li zadat maximální dobu trvání provádění pro úlohu nebo úlohu, nastavte maxWallClockTime omezení. Toto nastavení použijte pro ukončení úkolů, které nepostupují.
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čeno jako
{ category:"ServerError", code="TaskEnded"}.
Ukončovací kódy úkolů
Když úloha 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, na kterém se proces spouští, určuje ukončovací kód.
Selhání nebo přerušení úloh
Úkoly můžou 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, pokud deallocační politika fondu odebere uzly okamžitě, aniž by čekala na dokončení úkolů.
Ve všech případech může služba Batch automaticky znovu spustit úlohu na jiném uzlu.
Je také možné, že přerušovaný problém způsobí, že úloha přestane reagovat nebo trvá 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í webu Azure Portal stáhněte soubor protokolu RDP (Remote Desktop Protocol) pro uzly Windows a získejte informace o připojení SSH (Secure Shell) pro uzly Linuxu. Tyto informace si můžete stáhnout také pomocí rozhraní API batch .NET nebo Batch Pythonu .
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:
- Azure Portal
- Rozhraní Batch REST API: adduser
- Batch .NET API: ComputeNode.CreateComputeNodeUser
- Modul Batch Python: add_user
V případě potřeby nakonfigurujte nebo zakažte přístup k výpočetním uzlům.
Řešení problémových uzlů
Klientská aplikace nebo služba Batch může prozkoumat metadata neúspěšných úloh a identifikovat problémový uzel. Každý uzel ve fondu má jedinečné ID. Metadata úloh zahrnují uzel, na kterém se úloha spouští. Jakmile zjistíte problémový uzel, zkuste vyřešit selhání následujícími metodami.
Restartování uzlu
Restartování uzlu někdy řeší latentní problémy, jako jsou zablokované nebo chybové procesy. Pokud váš fond používá spouštěcí úkol nebo vaše úloha používá úkol přípravy úlohy, restartování uzlu tyto úkoly provede.
- Rozhraní REST API služby Batch: restartování
- Batch .NET API: ComputeNode.Reboot
Přeinstalovat uzel
Obnova obrazu uzlu přeinstaluje operační systém. Úkoly a úkoly přípravy úloh se spustí znovu po přeinstalování systému.
- Rozhraní REST API služby Batch: obnovení obrazu
- Batch .NET API: ComputeNode.Reimage
Odebrání uzlu z fondu
Odebrání uzlu z fondu je někdy nezbytné.
- Rozhraní REST API služby Batch: removenodes
- Batch .NET API: PoolOperations
Zakázání plánování úkolů na uzlu
Zakázání plánování úkolů na uzlu efektivně přenese uzel do režimu offline. Služba Batch nepřiřazuje k uzlu žádné další úkoly. Uzel však pokračuje v běhu ve fondu. Pak můžete dále prošetřit chyby, aniž byste ztratili data neúspěšného úkolu. Uzel také nezpůsobí další selhání úloh.
Například zakažte plánování úkolů na uzlu. Pak se přihlaste k uzlu vzdáleně. Prozkoumejte protokoly událostí a proveďte další řešení potíží. Jakmile problémy vyřešíte, povolte znovu plánování úkolů, aby se uzel vrátil do režimu online.
- Rozhraní REST API služby Batch: Povolení plánování
- Rozhraní API služby Batch .NET: ComputeNode.EnableScheduling
Pomocí těchto akcí můžete určit, jak služba Batch zpracovává úlohy, které právě běží na uzlu. Pokud například zakážete plánování úkolů pomocí rozhraní Batch .NET API, můžete zadat enum hodnotu pro DisableComputeNodeSchedulingOption. Můžete zvolit, zda chcete:
- Ukončení spuštěných úloh:
Terminate - Znovuzařazení úkolů do fronty pro naplánování na jiných uzlech:
Requeue - Před provedením akce povolte dokončení spuštěných úkolů:
TaskCompletion
Opakování po chybách
Rozhraní API služby Batch vás upozorní na selhání. Všechna rozhraní API můžete znovu spustit pomocí integrované globální rutiny pro opakování. Tato možnost je osvědčeným postupem.
Po selhání počkejte několik sekund před opakováním. Pokud se opakování opakuje příliš často nebo příliš rychle, obslužná rutina opakování omezuje požadavky.