Compartilhar via


Resolver erros de tamanho do trabalho excedido

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

Sintoma

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

Causa

Esse erro ocorre quando a implantação excede os limites de tamanho permitidos. Geralmente, ele 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 de metadados e o modelo podem 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 qualquer definição de recurso que use 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 caracteres em uma expressão de modelo

Solução 1: Reduzir o tamanho do nome

Tente reduzir o comprimento dos nomes usados em parâmetros, variáveise saídas. Quando esses valores são repetidos em loops, um nome longo é multiplicado muitas vezes.

Solução 2 – Simplificar o modelo

Quando seu 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 do Bicep. Os módulos do Bicep são convertidos em um único modelo do ARM com modelos aninhados.

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

Use uma dependência implícita criada quando um recurso faz referência a outro recurso pelo 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 depender de outro loop de n recursos, isso resultará no armazenamento de dados O(n²). Por outro lado, se cada recurso em um loop depender apenas de seu equivalente no outro loop, ele resultará em dados O(n). Essa diferença pode parecer sutil, mas o impacto no armazenamento aumenta muito rapidamente.

Solução 4: Reduzir dados incompactáveis

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