Azure Batch erros de tarefas e tarefas

Podem ocorrer vários erros ao adicionar, agendar ou executar tarefas e tarefas Azure Batch. É simples detetar erros que ocorrem quando adiciona tarefas e tarefas. Normalmente, a API, a linha de comandos ou a interface de utilizador devolvem quaisquer falhas imediatamente. Este artigo aborda como verificar e processar erros que ocorrem após a submissão de tarefas e tarefas.

Falhas em trabalhos

Uma tarefa é um grupo de uma ou mais tarefas, que especificam linhas de comandos a executar. Pode especificar os seguintes parâmetros opcionais ao adicionar uma tarefa. Estes parâmetros influenciam a forma como a tarefa pode falhar.

  • JobConstraints. Opcionalmente, pode utilizar a maxWallClockTime propriedade para definir a quantidade máxima de tempo que uma tarefa pode estar ativa ou em execução. Se a tarefa exceder o maxWallClockTime, a tarefa termina com a terminateReason propriedade definida como MaxWallClockTimeExpiry em JobExecutionInformation.

  • JobPreparationTask. Opcionalmente, pode especificar uma tarefa de preparação de tarefas para ser executada em cada nó de computação agendado para executar uma tarefa de tarefa. O nó executa a tarefa de preparação da tarefa antes da primeira vez que executa uma tarefa para a tarefa. Se a tarefa de preparação da tarefa falhar, a tarefa não é executada e a tarefa não é concluída.

  • JobReleaseTask. Opcionalmente, pode especificar uma tarefa de lançamento de tarefas para tarefas que tenham uma tarefa de preparação de trabalhos. Quando uma tarefa está a ser terminada, a tarefa de lançamento da tarefa é executada em cada nó de conjunto que executou uma tarefa de preparação de tarefas. Se uma tarefa de lançamento de tarefas falhar, a tarefa continua a ser movida para um completed estado.

Na portal do Azure, pode definir estes parâmetros no Gestor de tarefas, tarefas de preparação e lançamento e secções Avançadas do ecrã Adicionar tarefa do Batch.

Propriedades da tarefa

Verifique se existem erros nas seguintes propriedades da tarefa no JobExecutionInformation :

  • A terminateReason propriedade indica MaxWallClockTimeExpiry se a tarefa excedeu o maxWallClockTime especificado nas restrições da tarefa e, portanto, a tarefa terminou. Esta propriedade também pode ser definida como taskFailed se o atributo da onTaskFailure tarefa estiver definido como performExitOptionsJobActione uma tarefa falhar com uma condição de saída que especifique um jobAction de terminatejob.

  • A propriedade JobSchedulingError é definida se tiver ocorrido um erro de agendamento.

Tarefas de preparação de tarefas

Uma instância de uma tarefa de preparação de tarefas é executada em cada nó de computação na primeira vez que o nó executa uma tarefa para a tarefa. Pode pensar na tarefa de preparação da tarefa como um modelo de tarefa, com várias instâncias em execução, até ao número de nós num conjunto. Verifique as instâncias da tarefa de preparação da tarefa para determinar se ocorreram erros.

Pode utilizar a API Trabalho - Preparação de Lista e Estado da Tarefa de Versão para listar o estado de execução de todas as instâncias de tarefas de preparação e lançamento de trabalhos para uma tarefa especificada. Tal como acontece com outras tarefas, JobPreparationTaskExecutionInformation está disponível com propriedades como failureInfo, exitCodee result.

Quando uma tarefa de preparação de trabalhos é executada, a tarefa que acionou a tarefa de preparação da tarefa é movida para uma taskState de preparing. Se a tarefa de preparação da tarefa falhar, a tarefa de acionamento é revertida para o active estado e não é executada.

Se uma tarefa de preparação de trabalhos falhar, a tarefa de acionamento da tarefa não é executada. A tarefa não é concluída e está bloqueada. Se não existirem outros trabalhos com tarefas que possam ser agendadas, o conjunto poderá não ser utilizado.

Tarefas de lançamento de tarefas

Uma instância de uma tarefa de lançamento de tarefas é executada quando a tarefa está a ser terminada em cada nó que executou uma tarefa de preparação de trabalhos. Verifique as instâncias de tarefas de lançamento da tarefa para determinar se ocorreram erros.

Pode utilizar a API Trabalho - Preparação de Lista e Estado da Tarefa de Versão para listar o estado de execução de todas as instâncias de tarefas de preparação e lançamento de trabalhos para uma tarefa especificada. Tal como acontece com outras tarefas, JobReleaseTaskExecutionInformation está disponível com propriedades como failureInfo, exitCodee result.

Se uma ou mais tarefas de lançamento de tarefas falharem, a tarefa ainda será terminada e será movida para um completed estado.

Falhas de tarefas

As tarefas de trabalho podem falhar pelos seguintes motivos:

  • A linha de comandos da tarefa falha e devolve com um código de saída diferente de zero.
  • Um ou mais resourceFiles especificados para uma tarefa não são transferidos.
  • Um ou mais outputFiles especificados para uma tarefa não são carregados.
  • O tempo decorrido da tarefa excede a maxWallClockTime propriedade especificada em TaskConstraints.

Em todos os casos, verifique se existem erros e informações sobre os erros nas seguintes propriedades:

  • A propriedade TaskExecutionInformation tem várias propriedades que fornecem informações sobre um erro. TaskExecutionResult indica se a tarefa falhou por algum motivo e exitCodefailureInfo fornece mais informações sobre a falha.

  • A tarefa move-se sempre para TaskStatecompleted, quer tenha sido bem-sucedida ou falhou.

Considere o impacto das falhas de tarefas no trabalho e em quaisquer dependências de tarefas. Pode especificar ExitConditions para configurar ações para dependências e para a tarefa.

  • DependencyAction controla se pretende bloquear ou executar tarefas que dependem da tarefa falhada.
  • JobAction controla se a tarefa falhada faz com que a tarefa seja desativada, terminada ou inalterada.

Linhas de comandos de tarefas

As linhas de comandos de tarefas não são executadas sob uma shell em nós de computação, pelo que não podem utilizar nativamente funcionalidades de shell, como a expansão de variáveis de ambiente. Para tirar partido destas funcionalidades, tem de invocar a shell na linha de comandos. Para obter mais informações, veja Expansão da linha de comandos de variáveis de ambiente.

A saída da linha de comandos da tarefa escreve em ficheirosstderr.txt e stdout.txt . A sua aplicação também pode escrever em ficheiros de registo específicos da aplicação. Confirme que implementa uma verificação de erros abrangente para a sua aplicação detetar e diagnosticar problemas de forma rápida.

Registos de tarefas

Se o nó do conjunto que executou uma tarefa ainda existir, pode obter e ver os ficheiros de registo de tarefas. Várias APIs permitem listar e obter ficheiros de tarefas, como Ficheiro – Obter Da Tarefa. Também pode listar e ver ficheiros de registo de uma tarefa ou nó com o portal do Azure.

  1. Na parte superior da página Descrição geral de um nó, selecione Carregar registos de lote.

    Captura de ecrã a mostrar uma página de descrição geral de um nó com Carregar registos de lote realçados.

  2. Na página Carregar registos do Batch , selecione Escolher contentor de armazenamento, selecione um contentor de Armazenamento do Azure para o qual carregar e, em seguida, selecione Iniciar carregamento.

    Captura de ecrã a mostrar a página Carregar registos em lote.

  3. Pode ver, abrir ou transferir os registos a partir da página do contentor de armazenamento.

    Captura de ecrã a mostrar os registos de tarefas num contentor de armazenamento.

Ficheiros de saída

Uma vez que os conjuntos do Batch e os nós de conjunto são muitas vezes efémeros, com os nós a serem continuamente adicionados e eliminados, é melhor guardar os ficheiros de registo quando a tarefa é executada. Os ficheiros de saída de tarefas são uma forma conveniente de guardar ficheiros de registo no Armazenamento do Azure. Para obter mais informações, veja Persist task data to Azure Storage with the Batch service API (Persistir dados de tarefas no Armazenamento do Azure com a API de serviço do Batch).

Em cada carregamento de ficheiros, o Batch escreve dois ficheiros de registo no nó de computação, fileuploadout.txt e fileuploaderr.txt. Pode examinar estes ficheiros de registo para saber mais sobre uma falha específica. Se o carregamento do ficheiro não tiver sido tentado, por exemplo, porque a tarefa propriamente dita não pôde ser executada, estes ficheiros de registo não existem.

Passos seguintes