Udostępnij za pośrednictwem


Usuwanie błędów dotyczących przekroczenia rozmiaru zadania

W tym artykule opisano sposób rozwiązywania JobSizeExceededException problemów i DeploymentJobSizeExceededException . Rozmiar zadania przekracza błędy mogą wystąpić podczas wdrażania pliku Bicep lub szablonu usługi Azure Resource Manager (szablon usługi ARM).

Objaw

Podczas wdrażania szablonu występuje błąd informujący, że wdrożenie przekroczyło limity.

Przyczyna

Ten błąd występuje, gdy wdrożenie przekracza dozwolone limity rozmiaru. Zwykle pojawia się, gdy szablon lub zadanie wdrożenia jest zbyt duże. Pamiętaj, że szablony są kompresowane przed zweryfikowaniem ich rozmiarów na potrzeby wdrożenia, więc obowiązujące limity mogą być większe niż rzeczywisty rozmiar szablonu.

Limit rozmiaru zadania wdrożenia wynosi 1 MB po kompresji, w tym metadane dotyczące żądania. W przypadku dużych szablonów łączny rozmiar metadanych i szablon może przekroczyć ten limit.

Sam skompresowany rozmiar szablonu nie może przekraczać 4 MB, a każda definicja zasobu nie może przekroczyć 1 MB po kompresji. Te limity mają zastosowanie do stanu końcowego szablonu po rozszerzeniu dla wszystkich definicji zasobów, które używają pętli do tworzenia wielu wystąpień, w tym rozpoznanych wartości dla wszystkich zmiennych i parametrów.

Inne limity szablonów są następujące:

  • 256 parametrów
  • 256 zmiennych
  • 800 zasobów (w tym liczba kopii)
  • 64 wartości wyjściowe
  • 24 576 znaków w wyrażeniu szablonu

Rozwiązanie 1. Zmniejszenie rozmiaru nazwy

Spróbuj skrócić długość nazw używanych dla parametrów, zmiennych i danych wyjściowych. Gdy te wartości są powtarzane w pętlach, długa nazwa jest mnożona wiele razy.

Rozwiązanie 2. Uproszczenie szablonu

Gdy plik wdraża wiele różnych typów zasobów, rozważ podzielenie go na moduły. Podziel typy zasobów na grupy logiczne i dodaj moduł dla każdej grupy. Jeśli na przykład musisz wdrożyć wiele zasobów sieciowych, możesz przenieść te zasoby do modułu.

Możesz ustawić inne zasoby jako niejawne zależności i pobrać wartości z danych wyjściowych modułów.

Użyj specyfikacji szablonu, a nie modułów Bicep. Moduły Bicep są konwertowane na pojedynczy szablon usługi ARM z zagnieżdżonym szablonami.

Rozwiązanie 3. Ostrożnie używaj zależności

Użyj niejawnej zależności utworzonej, gdy zasób odwołuje się do innego zasobu pod jego nazwą symboliczną. W przypadku większości wdrożeń nie jest konieczne użycie dependsOn i utworzenie jawnej zależności.

Złożone zależności mogą szybko wykorzystywać limity danych. Jeśli na przykład pętla n zasobów zależy od innej pętli n zasobów, powoduje to przechowywanie danych O(n²). Natomiast jeśli każdy zasób w jednej pętli zależy tylko od jego odpowiednika w drugiej pętli, powoduje to wyświetlenie danych O(n). Ta różnica może wydawać się subtelna, ale wpływ magazynu rośnie bardzo szybko.

Rozwiązanie 4. Zmniejszenie nieskompresowanych danych

Uwzględnienie dużych ilości nieskompresowanych danych, takich jak certyfikaty lub pliki binarne, lub dane o niskim współczynniku kompresji w szablonie lub parametrach szybko zużyje limit rozmiaru.