Řešení chyb při překročení velikosti úlohy
Tento článek popisuje, jak tyto chyby DeploymentJobSizeExceededException
vyřešitJobSizeExceededException
. K chybám překročení velikosti úlohy může dojít při nasazení souboru Bicep nebo šablony Azure Resource Manageru (šablona ARM).
Příznaky
Při nasazování šablony se zobrazí chyba oznamující, že nasazení překročilo limity.
Příčina
K této chybě dochází, když nasazení překročí povolené limity velikosti. Obvykle se zobrazí, když je šablona nebo úloha nasazení příliš velká. Upozorňujeme, že šablony se komprimují před ověřením jejich velikostí pro nasazení, takže efektivní limity můžou být větší než skutečná velikost šablony.
Limit velikosti úlohy nasazení je po kompresi 1 MB, včetně metadat o požadavku. U velkých šablon může kombinovaná velikost metadat a šablona tento limit překročit.
Samotná komprimovaná velikost šablony nesmí překročit 4 MB a každá definice jednotlivých prostředků nemůže po kompresi překročit 1 MB. Tato omezení platí pro konečný stav šablony po rozšíření pro všechny definice prostředků, které používají smyčky k vytvoření více instancí, což zahrnuje vyřešené hodnoty pro všechny proměnné a parametry.
Další omezení šablon jsou:
- 256 parametrů
- 256 proměnných
- 800 prostředků (včetně kopií)
- 64 výstupních hodnot
- 24 576 znaků ve výrazu šablony
Řešení 1: Zmenšení velikosti názvu
Zkuste zkrátit délku názvů, které používáte pro parametry, proměnné a výstupy. Pokud se tyto hodnoty opakují ve smyčce, dlouhý název se mnohokrát vynásobí.
Řešení 2: Zjednodušení šablony
Když soubor nasadí spoustu různých typů prostředků, zvažte jeho rozdělení na moduly. Rozdělte typy prostředků do logických skupin a přidejte modul pro každou skupinu. Pokud například potřebujete nasadit velké množství síťových prostředků, můžete tyto prostředky přesunout do modulu.
Další prostředky můžete nastavit jako implicitní závislosti a získat hodnoty z výstupu modulů.
Místo modulů Bicep používejte specifikace šablon. Moduly Bicep se převedou na jednu šablonu ARM s vnořenými šablonami.
Řešení 3: Pečlivě používejte závislosti
Použijte implicitní závislost , která se vytvoří, když prostředek odkazuje na jiný prostředek podle symbolického názvu. U většiny nasazení není nutné použít dependsOn
a vytvořit explicitní závislost.
Složité závislosti můžou rychle využívat limity dat. Pokud například smyčka n prostředků závisí na jiné smyčce n prostředků, výsledkem je ukládání dat O(n²). Naproti tomu pokud každý prostředek v jedné smyčce závisí pouze na jeho protějšku v druhé smyčce, výsledkem jsou data O(n ). Tento rozdíl se může zdát malý, ale dopad na úložiště roste velmi rychle.
Řešení 4: Snížení nekomprimovatelných dat
Zahrnutí velkých objemů nekomprimovatelných dat, jako jsou certifikáty nebo binární soubory, nebo data s nízkým poměrem komprese v šabloně nebo parametrech rychle spotřebovávají limit velikosti.