Risolvere gli errori relativi al superamento delle dimensioni del processo
Questo articolo descrive come risolvere gli errori JobSizeExceededException
e DeploymentJobSizeExceededException
. Gli errori di superamento delle dimensioni del processo si possono verificare quando si distribuisce un file Bicep o un modello di Azure Resource Manager (modello di ARM).
Sintomo
Durante la distribuzione di un modello, viene visualizzato un errore che indica che la distribuzione ha superato i limiti.
Causa
Questo errore si verifica quando la distribuzione supera i limiti di dimensione consentiti. In genere viene visualizzato quando il modello o il processo di distribuzione è troppo grande. Si noti che i modelli vengono compressi prima della verifica delle dimensioni per la distribuzione, pertanto i limiti effettivi possono essere maggiori delle dimensioni effettive del modello.
Il limite di dimensioni del processo di distribuzione è di 1 MB dopo la compressione, inclusi i metadati relativi alla richiesta. Per i modelli di grandi dimensioni, le dimensioni combinate dei metadati e il modello possono superare questo limite.
Le dimensioni del modello compresso non possono superare i 4 MB e ogni singola definizione di risorsa non può superare 1 MB dopo la compressione. Questi limiti si applicano allo stato finale del modello dopo l'espansione per tutte le definizioni di risorse che usano cicli per creare più istanze, inclusi i valori risolti per tutte le variabili e i parametri.
Altri limiti del modello sono riportati di seguito:
- 256 parametri
- 256 variabili
- 800 risorse (incluso il conteggio copie)
- 64 valori di output
- 24.576 caratteri in un'espressione di modello
Soluzione 1: Ridurre le dimensioni del nome
Provare a ridurre la lunghezza dei nomi usati per parametri, variabili e output. Quando questi valori si ripetono in cicli, un nome lungo viene moltiplicato più volte.
Soluzione 2: semplificare il modello
Quando un file distribuisce molti tipi di risorse diversi, è consigliabile la suddivisione in moduli. Suddividere i tipi di risorse in gruppi logici e aggiungere un modulo a ciascun gruppo. Ad esempio, se fosse necessario distribuire molte risorse di networking, si possono spostare tali risorse in un modulo.
È possibile impostare altre risorse come dipendenze implicite e ottenere valori dall'output dei moduli.
Usare le specifiche di modello anziché i moduli Bicep. I moduli Bicep vengono convertiti in un singolo modello di Resource Manager con modelli annidati.
Soluzione 3: Usare attentamente le dipendenze
Usare una dipendenza implicita che viene creata quando una risorsa fa riferimento a un'altra risorsa in base al nome simbolico. Per la maggior parte delle distribuzioni non è necessario usare dependsOn
e creare una dipendenza esplicita.
Le dipendenze complesse possono usare rapidamente i limiti dei dati. Ad esempio, se un ciclo di n risorse dipende da un altro ciclo di n risorse, si ottiene l'archiviazione dei dati O(n²). Al contrario, se ogni risorsa in un ciclo dipende solo dalla controparte dell'altro ciclo, genera dati O(n). Questa differenza può sembrare sottile, ma l'impatto sull'archiviazione cresce molto rapidamente.
Soluzione 4: Ridurre i dati incompressibili
Includendo grandi quantità di dati incomprimibili, ad esempio certificati o file binari, o dati con un rapporto di compressione basso in un modello o parametri utilizzeranno rapidamente il limite di dimensioni.