Azure Batch errori di attività e processi

Possono verificarsi diversi errori quando si aggiungono, pianificano o si eseguono Azure Batch processi e attività. È semplice rilevare gli errori che si verificano quando si aggiungono processi e attività. L'API, la riga di comando o l'interfaccia utente restituisce in genere eventuali errori immediatamente. Questo articolo illustra come verificare e gestire gli errori che si verificano dopo l'invio di processi e attività.

Errori dei processi

Un processo è un gruppo di una o più attività, che specificano le righe di comando da eseguire. Quando si aggiunge un processo, è possibile specificare i parametri facoltativi seguenti. Questi parametri influiscono sul modo in cui il processo può avere esito negativo.

  • JobConstraints. Facoltativamente, è possibile utilizzare la maxWallClockTime proprietà per impostare la quantità massima di tempo per cui un processo può essere attivo o in esecuzione. Se il processo supera maxWallClockTime, il processo termina con la terminateReason proprietà impostata su MaxWallClockTimeExpiry in JobExecutionInformation.

  • JobPreparationTask. Facoltativamente, è possibile specificare un'attività di preparazione del processo da eseguire in ogni nodo di calcolo pianificato per eseguire un'attività di processo. Il nodo esegue l'attività di preparazione del processo prima della prima esecuzione di un'attività per il processo. Se l'attività di preparazione del processo ha esito negativo, l'attività non viene eseguita e il processo non viene completato.

  • JobReleaseTask. Facoltativamente, è possibile specificare un'attività di rilascio del processo per i processi con un'attività di preparazione del processo. Quando un processo viene terminato, l'attività di rilascio del processo viene eseguita in ogni nodo del pool che ha eseguito un'attività di preparazione del processo. Se un'attività di rilascio del processo non riesce, il processo passa comunque a uno completed stato.

Nella portale di Azure è possibile impostare questi parametri in Gestione processi, attività di preparazione e rilascio e sezioni Avanzate della schermata Aggiungi processo batch.

Proprietà dei processi

Controllare le proprietà del processo seguenti in JobExecutionInformation per verificare la presenza di errori:

  • La terminateReason proprietà indica MaxWallClockTimeExpiry se il processo ha superato l'oggetto maxWallClockTime specificato nei vincoli del processo e pertanto il processo è terminato. Questa proprietà può essere impostata anche su taskFailed se l'attributo del onTaskFailure processo è impostato su performExitOptionsJobActione un'attività ha esito negativo con una condizione di uscita che specifica un jobAction di terminatejob.

  • La proprietà JobSchedulingError viene impostata se si è verificato un errore di pianificazione.

Attività di preparazione del processo

Un'istanza di un'attività di preparazione del processo viene eseguita in ogni nodo di calcolo la prima volta che il nodo esegue un'attività per il processo. È possibile considerare l'attività di preparazione del processo come modello di attività, con più istanze in esecuzione, fino al numero di nodi in un pool. Controllare le istanze dell'attività di preparazione del processo per determinare se si sono verificati errori.

È possibile usare l'API Stato attività Processo - Elenco e Preparazione rilascio per elencare lo stato di esecuzione di tutte le istanze delle attività di preparazione e rilascio del processo per un processo specificato. Come per altre attività, JobPreparationTaskExecutionInformation è disponibile con proprietà come failureInfo, exitCodee result.

Quando viene eseguita un'attività di preparazione del processo, l'attività che ha attivato l'attività di preparazione del processo passa a un taskState di preparing. Se l'attività di preparazione del processo ha esito negativo, l'attività di attivazione torna allo active stato e non viene eseguita.

Se un'attività di preparazione del processo ha esito negativo, l'attività di attivazione del processo non viene eseguita. Il processo non viene completato ed è bloccato. Se non sono presenti altri processi con attività pianificabili, è possibile che il pool non venga usato.

Attività di rilascio del processo

Un'istanza di un'attività di rilascio del processo viene eseguita quando il processo viene terminato in ogni nodo che ha eseguito un'attività di preparazione del processo. Controllare le istanze dell'attività di rilascio del processo per determinare se si sono verificati errori.

È possibile usare l'API Stato attività Processo - Elenco e Preparazione rilascio per elencare lo stato di esecuzione di tutte le istanze delle attività di preparazione e rilascio del processo per un processo specificato. Come per altre attività, JobReleaseTaskExecutionInformation è disponibile con proprietà come failureInfo, exitCodee result.

Se una o più attività di rilascio del processo hanno esito negativo, il processo viene ancora terminato e passa a uno completed stato.

Errori delle attività

Le attività di processo possono non riuscire per i motivi seguenti:

  • La riga di comando dell'attività ha esito negativo e restituisce un codice di uscita diverso da zero.
  • Uno o più resourceFiles specificati per un'attività non vengono scaricati.
  • Uno o più outputFiles specificati per un'attività non vengono caricati.
  • Il tempo trascorso per l'attività supera la maxWallClockTime proprietà specificata in TaskConstraints.

In tutti i casi, controllare le proprietà seguenti per individuare errori e informazioni sugli errori:

  • La proprietà TaskExecutionInformation ha più proprietà che forniscono informazioni su un errore. TaskExecutionResult indica se l'attività non è riuscita per qualsiasi motivo e exitCodefailureInfo fornisce altre informazioni sull'errore.

  • L'attività completed passa sempre a TaskState, indipendentemente dal fatto che abbia avuto esito positivo o negativo.

Prendere in considerazione l'impatto degli errori delle attività sul processo e su eventuali dipendenze delle attività. È possibile specificare ExitConditions per configurare le azioni per le dipendenze e per il processo.

  • DependencyAction controlla se bloccare o eseguire attività che dipendono dall'attività non riuscita.
  • JobAction controlla se l'attività non riuscita fa sì che il processo venga disabilitato, terminato o invariato.

Righe di comando dell'attività

Le righe di comando delle attività non vengono eseguite in una shell nei nodi di calcolo, quindi non possono usare in modo nativo le funzionalità della shell, ad esempio l'espansione delle variabili di ambiente. Per sfruttare i vantaggi di queste funzionalità, è necessario richiamare la shell nella riga di comando. Per altre informazioni, vedere Espansione della riga di comando delle variabili di ambiente.

L'output della riga di comando dell'attività scrive in stderr.txt e stdout.txt file. L'applicazione potrebbe anche scrivere in file di log specifici dell'applicazione. Assicurarsi di implementare un controllo degli errori completo per l'applicazione per rilevare e diagnosticare tempestivamente i problemi.

Log attività

Se il nodo del pool che ha eseguito un'attività esiste ancora, è possibile ottenere e visualizzare i file di log attività. Diverse API consentono di elencare e ottenere file di attività, ad esempio File - Recupera da attività. È anche possibile elencare e visualizzare i file di log per un'attività o un nodo usando il portale di Azure.

  1. Nella parte superiore della pagina Panoramica per un nodo selezionare Carica log batch.

    Screenshot di una pagina di panoramica del nodo con l'opzione Carica log batch evidenziata.

  2. Nella pagina Carica log batch selezionare Seleziona contenitore di archiviazione, selezionare un contenitore di Archiviazione di Azure in cui caricare e quindi selezionare Avvia caricamento.

    Screenshot della pagina Carica log batch.

  3. È possibile visualizzare, aprire o scaricare i log dalla pagina del contenitore di archiviazione.

    Screenshot dei log attività in un contenitore di archiviazione.

File di output

Poiché i pool di Batch e i nodi del pool sono spesso temporanei, con nodi aggiunti ed eliminati in modo continuo, è consigliabile salvare i file di log durante l'esecuzione del processo. I file di output delle attività offrono un modo pratico per salvare i file di log nell'Archiviazione di Azure. Per altre informazioni, vedere Rendere persistenti i dati di attività in Archiviazione di Azure con l'API del servizio Batch.

In ogni caricamento di file, Batch scrive due file di log nel nodo di calcolo, fileuploadout.txt e fileuploaderr.txt. È possibile esaminare questi file di log per ottenere ulteriori informazioni su un errore specifico. Se il caricamento del file non è stato tentato, ad esempio perché l'attività stessa non è stata eseguita, questi file di log non esistono.

Passaggi successivi