Partilhar via


Resolver erros para o tamanho do trabalho excedido

Este artigo descreve como resolver os JobSizeExceededException erros e DeploymentJobSizeExceededException . Os erros de tamanho do trabalho excedido podem ocorrer quando você implanta um arquivo Bicep ou um modelo do Azure Resource Manager (modelo ARM).

Sintoma

Ao implantar um modelo, você recebe um erro informando que a implantação excedeu os limites.

Motivo

Este erro ocorre quando a implantação excede os limites de tamanho permitidos. Ele geralmente aparece quando o modelo ou o trabalho de implantação é muito grande. Observe que os modelos são compactados antes que seus tamanhos sejam verificados para implantação, portanto, os limites efetivos podem ser maiores do que o tamanho real do modelo.

O limite de tamanho do trabalho de implantação é de 1 MB após a compactação, incluindo metadados sobre a solicitação. Para modelos grandes, o tamanho combinado dos metadados e do modelo pode ultrapassar esse limite.

O tamanho do modelo compactado em si não pode exceder 4 MB, e cada definição de recurso individual não pode exceder 1 MB após a compactação. Esses limites se aplicam ao estado final do modelo após a expansão para quaisquer definições de recursos que usam loops para criar várias instâncias, o que inclui valores resolvidos para todas as variáveis e parâmetros.

Outros limites de modelo são:

  • 256 parâmetros
  • 256 variáveis
  • 800 recursos (incluindo a contagem de cópias)
  • 64 valores de saída
  • 24 576 carateres numa expressão de modelo

Solução 1: Reduzir o tamanho do nome

Tente encurtar o comprimento dos nomes que você usa para parâmetros, variáveis e saídas. Quando esses valores são repetidos em loops, um nome longo é multiplicado muitas vezes.

Solução 2: Simplifique o modelo

Quando o arquivo implantar vários tipos de recursos diferentes, considere dividi-lo em módulos. Divida seus tipos de recursos em grupos lógicos e adicione um módulo para cada grupo. Por exemplo, se você precisar implantar muitos recursos de rede, poderá mover esses recursos para um módulo.

Você pode definir outros recursos como dependências implícitas e obter valores da saída de módulos.

Use especificações de modelo em vez de módulos Bicep. Os módulos Bicep são convertidos em um único modelo ARM com modelos aninhados.

Solução 3: Use as dependências com cuidado

Use uma dependência implícita que é criada quando um recurso faz referência a outro recurso por seu nome simbólico. Para a maioria das implantações, não é necessário usar dependsOn e criar uma dependência explícita.

Dependências complexas podem consumir rapidamente os limites de dados. Por exemplo, se um loop de n recursos depende de outro loop de n recursos, isso resulta no armazenamento de dados O(n²). Por outro lado, se cada recurso em um loop depende apenas de sua contraparte no outro loop, isso resulta em dados O(n ). Essa diferença pode parecer sutil, mas o impacto no armazenamento cresce muito rapidamente.

Solução 4: Reduzir dados incompressíveis

Incluir grandes quantidades de dados incompressíveis, como certificados ou binários, ou dados com uma baixa taxa de compactação em um modelo ou parâmetros consumirá rapidamente o limite de tamanho.