Поделиться через


Устранение ошибок, связанных с превышением размера задания

В этой статье описано, как устранять ошибки JobSizeExceededException и DeploymentJobSizeExceededException. Ошибки превышения размера для задания могут возникать при развертывании файла Bicep или шаблона Azure Resource Manager (шаблона ARM).

Симптом

При развертывании шаблона появляется сообщение об ошибке, указывающее на превышение пределов для развертывания.

Причина

Эта ошибка возникает, когда развертывание превышает допустимые ограничения размера. Обычно он отображается, когда шаблон или задание развертывания слишком велико. Обратите внимание, что шаблоны сжимаются до проверки их размеров для развертывания, поэтому действующие ограничения могут быть больше фактического размера шаблона.

Ограничение размера задания развертывания составляет 1 МБ после сжатия, включая метаданные о запросе. Для больших шаблонов объединенный размер метаданных и шаблон может превысить это ограничение.

Размер сжатого шаблона не может превышать 4 МБ, и каждое определение отдельного ресурса не может превышать 1 МБ после сжатия. Эти ограничения применяются к окончательному состоянию шаблона после расширения для любых определений ресурсов, использующих циклы для создания нескольких экземпляров, включающего разрешенные значения для всех переменных и параметров.

Другие ограничения для шаблонов:

  • 256 параметров;
  • 256 переменных;
  • 800 ресурсов (включая число копий);
  • 64 выходных значения;
  • 24 576 знаков в выражении шаблона.

Решение 1. Уменьшение размера имени

Попробуйте сократить длину имен, используемых для параметров, переменных и выходных данных. Когда эти значения повторяются в циклах копирования, длинное имя многократно дублируется.

Решение 2. Упрощение шаблона

Если файл развертывает много разных типов ресурсов, постарайтесь разделите его на модули. Разделите типы ресурсов на логические группы и добавьте отдельный модуль для каждой группы. Например, если требуется развернуть множество сетевых ресурсов, можно переместить эти ресурсы в модуль.

Вы можете назначать другие ресурсы неявными зависимостями и получать значения из выходных данных модулей.

Используйте спецификации шаблонов, а не модули Bicep. Модули Bicep преобразуются в один шаблон ARM с вложенными шаблонами.

Решение 3. Тщательно используйте зависимости

Используйте неявную зависимость, которая создается при ссылках ресурса на другой ресурс по символьному имени. Для большинства развертываний нет необходимости использовать dependsOn для создания явной зависимости.

Сложные зависимости могут быстро использовать ограничения данных. Например, если цикл n ресурсов зависит от другого цикла n ресурсов, он приводит к хранению данных O(n) . Напротив, если каждый ресурс в одном цикле зависит только от своего аналога в другом цикле, он приводит к данным O(n ). Это различие может показаться тонким, но влияние хранилища растет очень быстро.

Решение 4. Сокращение несжатых данных

Включая большие объемы несжатых данных, таких как сертификаты или двоичные файлы, или данные с низким коэффициентом сжатия в шаблоне или параметрах быстро будут использовать ограничение размера.