Condividi tramite


Gestione e rilevamento degli errori in Azure Batch

A volte, potrebbe essere necessario gestire gli errori di attività e applicazioni nella soluzione Azure Batch. Questo articolo illustra diversi tipi di errori di Batch e come risolvere i problemi comuni.

Codici di errore

Alcuni tipi generali di errori che potrebbero essere visualizzati in Batch sono:

  • Errori di rete per le richieste che non hanno mai raggiunto Batch o errori di rete quando la risposta batch non ha raggiunto il client in tempo.
  • Errori interni del server. Questi errori hanno una risposta HTTP con codice di stato standard 5xx .
  • Errori correlati al controllo del flusso. Questi errori includono risposte del codice di stato HTTP 429 o 503 con l'intestazione Retry-after.
  • 4xx errori come AlreadyExists e InvalidOperation. Questi errori indicano che la risorsa non è nello stato corretto per la transizione di stato.

Per informazioni dettagliate su codici di errore specifici, vedere Codici di errore e stato del batch. Questo riferimento include codici di errore per l'API REST, il servizio Batch e per le attività e la pianificazione dei processi.

Errori dell'applicazione

Durante l'esecuzione, un'applicazione potrebbe produrre output di diagnostica. È possibile usare questo output per risolvere i problemi. Il servizio Batch scrive l'output standard e l'output degli errori standard nei file stdout.txt e stderr.txt nella directory del processo sul nodo di calcolo. Per ulteriori informazioni, vedere i file e le cartelle in Batch.

Per scaricare questi file di output, usare il portale di Azure o uno degli SDK di Batch. Ad esempio, per recuperare i file a scopo di risoluzione dei problemi, usare ComputeNode.GetNodeFile e CloudTask.GetNodeFile nella libreria Batch .NET.

Errori delle attività

Gli errori delle attività rientrano in diverse categorie.

Errori di pre-elaborazione

Se l'avvio di un'attività non riesce, viene impostato un errore di pre-elaborazione per l'attività. Gli errori di pre-elaborazione possono verificarsi se:

  • I file di risorse dell'attività sono stati spostati.
  • L'account di archiviazione non è più disponibile.
  • Si è verificato un altro problema che ha impedito la corretta copia dei file nel nodo.

Errori di caricamento dei file

Se i file specificati per un'attività non vengono caricati per qualsiasi motivo, viene impostato un errore di caricamento del file per l'attività. Gli errori di caricamento dei file possono verificarsi se:

  • Il token di firma di accesso condiviso fornito per l'accesso ad Archiviazione di Azure non è valido.
  • Il token SAS non fornisce autorizzazioni di scrittura.
  • L'account di archiviazione non è più disponibile.
  • Si è verificato un altro problema che impediva la corretta copia dei file dal nodo.

Errori delle applicazioni

Anche il processo specificato dalla riga di comando dell'attività può non riuscire. Per altre informazioni, vedere Codici di uscita delle attività.

Per gli errori dell'applicazione, configurare Batch per ripetere automaticamente l'attività fino a un numero specificato di volte.

Errori relativi ai vincoli

Per specificare la durata massima di esecuzione per un processo o un'attività, impostare il maxWallClockTime vincolo . Usare questa impostazione per terminare le attività che non superano lo stato di avanzamento.

Quando l'attività supera il tempo massimo:

  • L'attività è contrassegnata come completata.
  • Il codice di uscita è impostato su 0xC000013A.
  • Il campo schedulingError è contrassegnato come { category:"ServerError", code="TaskEnded"}.

Codici di uscita delle attività

Quando un'attività esegue un processo, Batch popola la proprietà del codice di uscita dell'attività con il codice di ritorno del processo. Se il processo restituisce un codice di uscita diverso da zero, il servizio Batch contrassegna l'attività come non riuscita.

Il servizio Batch non determina il codice di uscita di un'attività. Il processo stesso, o il sistema operativo in cui viene eseguito il processo, determina il codice di uscita.

Errori o interruzioni delle attività

Le attività possono occasionalmente non riuscire o essere interrotte. Per esempio:

  • L'applicazione dell'attività stessa potrebbe fallire.
  • Il nodo su cui è in esecuzione l'attività potrebbe essere riavviato.
  • Un'operazione di ridimensionamento potrebbe rimuovere il nodo dal pool. Questa azione può verificarsi se il criterio di deallocazione del pool rimuove immediatamente i nodi senza attendere il completamento delle attività.

In tutti i casi, Batch può rieseguere automaticamente l'attività per l'esecuzione in un altro nodo.

È anche possibile che un problema intermittente causi l'arresto di un'attività o che ci metta troppo tempo per essere completata. È possibile impostare un intervallo di esecuzione massimo per un'attività. Se un'attività supera l'intervallo, il servizio Batch interrompe l'applicazione dell'attività.

Connettersi ai nodi di calcolo

È possibile eseguire il debug e la risoluzione dei problemi accedendo a un nodo di calcolo in modalità remota. Usare il portale di Azure per scaricare un file RDP (Remote Desktop Protocol) per i nodi Windows e ottenere informazioni di connessione SSH (Secure Shell) per i nodi Linux. È anche possibile scaricare queste informazioni usando le API Batch .NET o Batch Python .

Per connettersi a un nodo tramite RDP o SSH, creare prima di tutto un utente nel nodo. Usa uno dei seguenti metodi:

Se necessario, configurare o disabilitare l'accesso ai nodi di calcolo.

Risolvere i problemi relativi ai nodi

L'applicazione client o il servizio Batch può esaminare i metadati delle attività non riuscite per identificare un nodo del problema. Ogni nodo in un pool ha un ID univoco. I metadati delle attività includono il nodo in cui viene eseguita un'attività. Dopo aver trovato il nodo del problema, provare i metodi seguenti per risolvere l'errore.

Nodo di riavvio

Il riavvio di un nodo a volte risolve problemi latenti, ad esempio processi bloccati o arrestati in modo anomalo. Se il pool utilizza un'attività di avvio o se il lavoro utilizza un'attività di preparazione, un riavvio del nodo eseguirà queste attività.

Ricreazione dell'immagine del nodo

Reimaging di un nodo reinstalla il sistema operativo. Le attività di avvio e le attività di preparazione dei processi vengono rieseguite dopo che la ricreazione delle immagini è stata completata.

Rimuovere un nodo dal pool

La rimozione del nodo dal pool è talvolta necessaria.

Disabilitare la pianificazione delle attività nel nodo

La disabilitazione della pianificazione delle attività in un nodo porta effettivamente offline il nodo. Batch non assegna altre attività al nodo. Tuttavia, il nodo continua a essere in esecuzione nel pool. È quindi possibile analizzare ulteriormente gli errori senza perdere i dati dell'attività non riuscita. Il nodo non causerà più fallimenti delle attività.

Ad esempio, disabilitare la pianificazione delle attività nel nodo. Accedere quindi al nodo in modalità remota. Esaminare i registri eventi ed eseguire altre operazioni di risoluzione dei problemi. Dopo aver risolto i problemi, abilitare di nuovo la pianificazione delle attività per riportare il nodo online.

È possibile usare queste azioni per specificare batch gestisce le attività attualmente in esecuzione nel nodo. Ad esempio, quando si disabilita la pianificazione delle attività con l'API Batch .NET, è possibile specificare un valore enum per DisableComputeNodeSchedulingOption. È possibile scegliere:

  • Terminare le attività in esecuzione: Terminate
  • Riesegue le attività per la pianificazione in altri nodi: Requeue
  • Consenti il completamento delle attività in esecuzione prima di eseguire l'azione: TaskCompletion

Riprovare dopo gli errori

Le API batch segnalano gli errori. È possibile ritentare tutte le API usando il gestore di ripetizione dei tentativi globale predefinito. È consigliabile usare questa opzione.

Dopo un errore, attendere alcuni secondi prima di riprovare. Se si ritenta troppo spesso o troppo rapidamente, il gestore dei tentativi limita le richieste.

Passaggi successivi