Chyby fondu a uzlu služby Azure Batch
Některé operace vytváření a správy fondů Azure Batch probíhají okamžitě. Detekce selhání těchto operací je jednoduchá, protože chyby se obvykle vrací okamžitě z rozhraní API, příkazového řádku nebo uživatelského rozhraní. Některé operace jsou ale asynchronní, běží na pozadí a dokončení trvá několik minut. Tento článek popisuje způsoby, jak detekovat a vyhnout se selháním, ke kterým může dojít v operacích na pozadí pro fondy a uzly.
Nezapomeňte nastavit aplikace tak, aby implementovaly komplexní kontrolu chyb, zejména pro asynchronní operace. Komplexní kontrola chyb vám může pomoct rychle identifikovat a diagnostikovat problémy.
Chyby fondu
Chyby fondu můžou souviset s vypršením časového limitu nebo selháním změny velikosti, selháním automatického škálování nebo selháním odstranění fondu.
Změna velikosti časového limitu nebo selhání
Když vytvoříte nový fond nebo změníte velikost existujícího fondu, zadáte cílový počet uzlů. Operace vytvoření nebo změna velikosti se dokončí okamžitě, ale skutečné přidělení nových uzlů nebo odebrání existujících uzlů může trvat několik minut. Ve fondu můžete zadat časový limit změny velikosti – Přidat nebo fond – Změnit velikost rozhraní API. Pokud služba Batch nemůže přidělit cílový počet uzlů během časového limitu změny velikosti, fond přejde do stabilního stavu a hlásí chyby změny velikosti.
Vlastnost resizeError obsahuje chyby, ke kterým došlo při posledním vyhodnocení.
Mezi běžné příčiny chyb změny velikosti patří:
Změna časového limitu je příliš krátká. Výchozí časový limit 15 minut je obvykle dostatečně dlouhý, aby se přidělily nebo odebraly uzly fondu. Pokud přidělujete velký počet uzlů, například více než 1 000 uzlů z image Azure Marketplace nebo více než 300 uzlů z image vlastního virtuálního počítače, můžete nastavit časový limit změny velikosti na 30 minut.
Nedostatečná kvóta jader. Účet Batch je omezený v počtu jader, která může přidělit napříč všemi fondy, a přestane přidělovat uzly, jakmile dosáhne této kvóty. Kvótu jader můžete zvýšit, aby služba Batch přidělila více uzlů. Další informace najdete v tématu Kvóty a omezení služby Batch.
Nedostatečná IP adresa podsítě, pokud je fond ve virtuální síti. Podsíť virtuální sítě musí mít dostatek IP adres pro přidělení každému požadovanému uzlu fondu. Jinak uzly nebude možné vytvořit. Další informace najdete v tématu Vytvoření fondu Služby Azure Batch ve virtuální síti.
Nedostatek prostředků, pokud je fond ve virtuální síti. Při vytváření fondu ve virtuální síti můžete vytvořit prostředky, jako jsou nástroje pro vyrovnávání zatížení, veřejné IP adresy a skupiny zabezpečení sítě (NSG) ve stejném předplatném jako účet Batch. Ujistěte se, že jsou pro tyto prostředky dostatečné kvóty předplatného.
Velké fondy s vlastními imagemi virtuálních počítačů Přidělení velkých fondů, které používají vlastní image virtuálních počítačů, může trvat déle a může dojít k vypršení časového limitu velikosti. Doporučení týkající se limitů a konfigurace najdete v tématu Vytvoření fondu pomocí Galerie výpočetních prostředků Azure.
Automatické selhání škálování
Službu Azure Batch můžete nastavit tak, aby automaticky škáluje počet uzlů ve fondu a definujete parametry pro vzorec automatického škálování fondu. Služba Batch pak pomocí vzorce pravidelně vyhodnocuje počet uzlů ve fondu a nastaví nová cílová čísla. Další informace najdete v tématu Vytvoření automatického vzorce pro škálování výpočetních uzlů ve fondu Batch.
K následujícím problémům může dojít při použití automatického škálování:
- Vyhodnocení automatického škálování selže.
- Výsledná operace změny velikosti selže a vyprší časový limit.
- Problém se vzorcem automatického škálování vede k nesprávným cílovým hodnotám uzlu. Změna velikosti může fungovat nebo vypršel časový limit.
Pokud chcete získat informace o posledním vyhodnocení automatického škálování, použijte vlastnost autoScaleRun . Tato vlastnost hlásí čas vyhodnocení, hodnoty a výsledek a případné chyby výkonu.
Událost dokončení změny velikosti fondu zaznamenává informace o všech vyhodnoceních.
Selhání odstranění fondu
Pokud chcete odstranit fond obsahující uzly, služba Batch nejprve odstraní uzly, což může trvat několik minut. Batch pak odstraní samotný objekt fondu.
Služba Batch nastaví stav fondu během deleting
procesu odstranění. Volající aplikace může zjistit, jestli odstranění fondu trvá příliš dlouho, pomocí state
vlastností a stateTransitionTime
vlastností.
Pokud odstranění fondu trvá déle, než se čekalo, služba Batch se pravidelně opakuje, dokud fond nebude úspěšně odstraněn. V některých případech je zpoždění způsobené výpadkem služby Azure nebo jinými dočasnými problémy. Další faktory, které brání úspěšnému odstranění fondu, můžou vyžadovat provedení akce k vyřešení problému. Mezi tyto faktory můžou patřit následující problémy:
Zámky prostředků můžou být umístěny do prostředků vytvořených službou Batch nebo do síťových prostředků, které služba Batch používá.
Prostředky, které jste vytvořili, můžou záviset na prostředku vytvořeném službou Batch. Pokud například vytvoříte fond ve virtuální síti, služba Batch vytvoří skupinu zabezpečení sítě, veřejnou IP adresu a nástroj pro vyrovnávání zatížení. Pokud tyto prostředky používáte mimo fond, nemůžete fond odstranit.
Poskytovatel
Microsoft.Batch
prostředků může být od předplatného, které obsahuje váš fond, zrušena registrace poskytovatele prostředků.U účtů
Microsoft Azure Batch
Batch v režimu předplatného uživatele už nemusí mít roli Přispěvatel nebo Vlastník předplatného, které obsahuje váš fond. Další informace najdete v tématu Povolení přístupu k předplatnému službou Batch.
Chyby uzlů
I když služba Batch úspěšně přiděluje uzly ve fondu, můžou různé problémy způsobit, že některé uzly nejsou v pořádku a nemůžou spouštět úlohy. Za tyto uzly se stále účtují poplatky, takže je důležité zjistit problémy, abyste se vyhnuli placení za uzly, které nemůžete použít. Znalost běžných chyb uzlů a znalost aktuálního stavu úlohy je užitečná při řešení potíží.
Selhání spuštění úkolu
Pro fond můžete zadat volitelný startTask . Stejně jako u každého úkolu používá spouštěcí úkol příkazový řádek a může stahovat soubory prostředků z úložiště. Spouštěcí úloha se spustí pro každý uzel při spuštění uzlu. Vlastnost waitForSuccess
určuje, zda Služba Batch čeká, dokud se spouštěcí úkol úspěšně nedokončí, než naplánuje všechny úkoly do uzlu. Pokud nakonfigurujete uzel tak, aby počkal na úspěšné dokončení úkolu zahájení, ale spouštěcí úkol selže, uzel není použitelný, ale stále se účtuje poplatky.
Selhání spouštěcích úloh můžete zjistit pomocí taskExecutionResult a taskFailureInformation vlastnosti startTaskInformation vlastnosti uzlu nejvyšší úrovně.
Neúspěšná spouštěcí úloha také způsobí, že batch nastaví computeNodeState na starttaskfailed
, pokud waitForSuccess
byl nastaven na true
.
Stejně jako u každého úkolu může dojít k mnoha příčinám selhání spouštěcího úkolu. Pokud chcete řešit potíže, zkontrolujte soubor stdout, stderr a všechny ostatní soubory protokolu specifické pro jednotlivé úlohy.
Spouštěcí úkoly musí být znovu zahájeny, protože spouštěcí úkol může běžet vícekrát na stejném uzlu, například při obnovení nebo restartování uzlu. Ve výjimečných případech, když se spouštěcí úloha spustí po události, způsobí restartování uzlu, jeden operační systém (OS) nebo dočasný disk se znovu vytvoří, zatímco druhý ne. Vzhledem k tomu, že úlohy spuštění služby Batch a všechny úkoly služby Batch se spouštějí z dočasného disku, není tato situace obvykle problém. V případech, kdy spouštěcí úloha nainstaluje aplikaci na disk s operačním systémem a udržuje další data na dočasném disku, ale může dojít k problémům se synchronizací. Pokud používáte oba disky, aplikaci odpovídajícím způsobem chraňte.
Selhání stahování balíčku aplikace
Můžete zadat jeden nebo více balíčků aplikací pro fond. Služba Batch stáhne zadané soubory balíčku do každého uzlu a po spuštění uzlu zruší jejich dekomprimace, ale před naplánováním úkolů. Běžně se používá příkaz spouštěcí úlohy s balíčky aplikací, například ke kopírování souborů do jiného umístění nebo ke spuštění instalace.
Pokud se balíčku aplikace nepodaří stáhnout a zrušit dekomprimace, vlastnost computeNodeError hlásí selhání a nastaví stav uzlu na unusable
.
Selhání stahování kontejneru
Můžete zadat jeden nebo více odkazů na kontejnery ve fondu. Služba Batch stáhne zadané kontejnery do každého uzlu. Pokud se kontejneru nepodaří stáhnout, vlastnost computeNodeError hlásí selhání a nastaví stav uzlu na unusable
.
Aktualizace operačního systému uzlu
Pro fondy enableAutomaticUpdates
Windows je ve výchozím nastavení nastavená hodnota true
. I když se doporučuje povolit automatické aktualizace, aktualizace můžou přerušit průběh úkolu, zejména pokud jsou úkoly dlouho spuštěné. Tuto hodnotu můžete nastavit, false
pokud potřebujete zajistit, aby aktualizace operačního systému neočekávaně neočekávaně neproběhla.
Uzel v nepoužitelném stavu
Služba Batch může hodnotu computeNodeState nastavit z unusable
mnoha důvodů. Do uzlu nemůžete plánovat úkoly unusable
, ale za tento uzel se účtují poplatky.
Pokud služba Batch dokáže zjistit příčinu, vlastnost computeNodeError ji hlásí. Pokud je uzel ve unusable
stavu, ale nemá žádnou computeNodeError, znamená to, že Služba Batch nemůže komunikovat s virtuálním počítačem. V tomto případě se služba Batch vždy pokusí obnovit virtuální počítač. Služba Batch se ale automaticky nepokouší obnovit virtuální počítače, které se nepodařilo nainstalovat balíčky aplikací nebo kontejnery, i když je unusable
jejich stav .
Mezi další důvody uzlů unusable
patří následující příčiny:
- Vlastní image virtuálního počítače je neplatná. Například obrázek není správně připravený.
- Virtuální počítač se přesune kvůli selhání infrastruktury nebo upgradu na nízké úrovni. Služba Batch obnoví uzel.
- Image virtuálního počítače byla nasazena na hardware, který ji nepodporuje.
- Virtuální počítače jsou ve virtuální síti Azure a provoz se zablokoval na klíčové porty.
- Virtuální počítače jsou ve virtuální síti, ale odchozí provoz do Služby Azure Storage je blokovaný.
- Virtuální počítače jsou ve virtuální síti s vlastní konfigurací DNS a server DNS nemůže přeložit úložiště Azure.
Soubory protokolů agenta uzlu
Proces agenta Batch, který běží na jednotlivých uzlech fondu, poskytuje soubory protokolu, které můžou pomoct, pokud potřebujete kontaktovat podporu týkající se problému s uzlem fondu. Soubory protokolů pro uzel můžete nahrát prostřednictvím webu Azure Portal, Batch Exploreru nebo výpočetního uzlu – nahrání rozhraní API protokolů služby Batch. Po nahrání a uložení souborů protokolu můžete odstranit uzel nebo fond, abyste ušetřili náklady na provoz uzlů.
Plný disk uzlu
Služba Batch používá dočasnou jednotku na virtuálním počítači fondu uzlů k ukládání souborů, jako jsou například následující soubory úloh, soubory úkolů a sdílené soubory:
- Soubory balíčků aplikací
- Soubory prostředků úloh
- Soubory specifické pro aplikaci stažené do jedné ze složek služby Batch
- Soubory Stdout a stderr pro každé spuštění aplikace úloh
- Výstupní soubory specifické pro aplikaci
Soubory, jako jsou balíčky aplikací nebo spuštění souborů prostředků úkolů, se zapisují pouze jednou, když služba Batch vytvoří uzel fondu. I když zapisují jenom jednou, pokud jsou tyto soubory příliš velké, mohly by vyplnit dočasnou jednotku.
Další soubory, například stdout a stderr, se zapisují pro každou úlohu, kterou uzel spouští. Pokud na stejném uzlu běží velký počet úloh nebo jsou soubory úkolů příliš velké, mohly by vyplnit dočasnou jednotku.
Uzel také potřebuje malé místo na disku s operačním systémem, aby po jeho spuštění vytvořil uživatele.
Velikost dočasné jednotky závisí na velikosti virtuálního počítače. Jedním z aspektů při výběru velikosti virtuálního počítače je zajistit, aby dočasná jednotka měla dostatek místa pro plánovanou úlohu.
Když na webu Azure Portal přidáte fond, můžete zobrazit úplný seznam velikostí virtuálních počítačů, včetně sloupce Velikost disku prostředku. Články popisované velikosti virtuálních počítačů obsahují tabulky se sloupcem Dočasné úložiště . Další informace najdete v tématu Velikosti virtuálních počítačů optimalizované pro výpočty. Příklad tabulky velikostí najdete v tématu Fsv2-series.
Pro soubory zapsané jednotlivými úlohami můžete zadat dobu uchovávání informací. Doba uchovávání určuje, jak dlouho mají být soubory úloh zachovány, než je automaticky vyčistíte. Dobu uchovávání můžete zkrátit, aby se snížily požadavky na úložiště.
Pokud na dočasném disku nebo na disku s operačním systémem dochází místo nebo dochází k vyčerpání místa, uzel se přesune na unusable
computeNoteState a chyba uzlu říká, že je disk plný.
Pokud si nejste jistí, co zabírá místo na uzlu, zkuste se vzdáleně připojit k uzlu a prošetřit ho ručně. K prozkoumání souborů, například výstupů úkolů, ve složkách spravovaných službou Batch můžete použít také soubor – seznam z rozhraní API výpočetního uzlu . Toto rozhraní API uvádí pouze soubory ve spravovaných adresářích služby Batch. Pokud vaše úkoly vytvořily soubory jinde, toto rozhraní API je nezobrazuje.
Jakmile z uzlu načtete všechna potřebná data nebo je nahrajete do odolného úložiště, můžete data podle potřeby odstranit, abyste uvolnili místo.
Můžete odstranit staré dokončené úlohy nebo úkoly, jejichž data úkolů jsou stále na uzlech. recentTasks
Vyhledejte kolekci v úkoluInformation na uzlu nebo použijte soubor – seznam z rozhraní API výpočetního uzlu. Odstranění úlohy odstraní všechny úkoly v úloze. Odstranění úkolů v úloze aktivuje odstranění dat v adresářích úkolů na uzlech a uvolní místo. Jakmile uvolníte dostatek místa, restartujte uzel. Uzel by se měl přesunout mimo unusable
stav a znovu do idle
tohoto uzlu.
Pokud chcete obnovit nepoužitelný uzel ve fondech VirtualMachineConfiguration , můžete ho z fondu odebrat pomocí rozhraní API pro odebrání uzlů . Potom můžete fond znovu zvětšit, abyste nahradili chybný uzel čerstvým uzlem.
Důležité
Reimage se v současné době nepodporuje pro fondy VirtualMachineConfiguration .
Další kroky
- Přečtěte si informace o kontrole chyb úloh a úkolů.
- Seznamte se s osvědčenými postupy pro práci se službou Azure Batch.