Compartilhar via


Tratamento e detecção de erros no Azure Batch

Às vezes, pode ser necessário lidar com falhas de tarefas e aplicativos na sua solução Azure Batch. Este artigo explica diferentes tipos de erros de batch e como resolver problemas comuns.

Códigos de erro

Alguns tipos gerais de erros que você pode ver no Batch são:

  • Falhas de rede para solicitações que nunca chegaram ao Batch, ou falhas de rede quando a resposta do Batch não chegou ao cliente a tempo.
  • Erros internos do servidor. Esses erros têm uma resposta HTTP de código de status padrão 5xx .
  • Erros relacionados a limitação. Esses erros incluem respostas HTTP com código de status 429 ou 503 com o cabeçalho Retry-after.
  • 4xx erros como AlreadyExists e InvalidOperation. Esses erros indicam que o recurso não está no estado correto para a transição de estado.

Para obter informações detalhadas sobre códigos de erro específicos, consulte Status do Lote e códigos de erro. Essa referência inclui códigos de erro para API REST, serviço em lote e para tarefas de trabalho e de agendamento.

Falhas de aplicativo

Durante a execução, um aplicativo pode produzir saída de diagnóstico. Você pode usar essa saída para solucionar problemas. O serviço do Lote grava a saída padrão e a saída de erro padrão nos arquivos stdout.txt e stderr.txt no diretório de tarefas no nó de computação. Para obter mais informações, consulte Arquivos e diretórios no Batch.

Para baixar esses arquivos de saída, use o portal do Azure ou um dos SDKs do Azure Batch. Por exemplo, para recuperar arquivos para fins de solução de problemas, use ComputeNode.GetNodeFile e CloudTask.GetNodeFile na biblioteca Batch .NET.

Erros de tarefa

Os erros de tarefa se enquadram em várias categorias.

Erros de pré-processamento

Se uma tarefa falhar ao iniciar, um erro de pré-processamento será definido para a tarefa. Erros de pré-processamento poderão ocorrer se:

  • Os arquivo de recurso da tarefa tiverem sido movidos.
  • A conta de armazenamento não está mais disponível.
  • Aconteceu outro problema que impediu a cópia bem-sucedida dos arquivos para o nó.

Erros de upload de arquivo

Se os arquivos especificados para uma tarefa falharem ao carregar por qualquer motivo, um erro de upload de arquivo será definido para a tarefa. Erros de upload de arquivo poderão ocorrer se:

  • O token SAS (assinatura de acesso compartilhado) fornecido para acessar o Armazenamento do Azure é inválido.
  • O token SAS não fornece permissões de gravação.
  • A conta de armazenamento não está mais disponível.
  • Aconteceu outro problema que impediu a cópia bem-sucedida dos arquivos do nó.

Erros de aplicativos

O processo especificado pela linha de comando da tarefa também pode falhar. Para obter mais informações, consulte códigos de saída da tarefa.

Para erros de aplicação, configure o Batch para repetir automaticamente a tarefa por um número especificado de vezes.

Erros de restrição

Para especificar a duração máxima da execução de um trabalho ou tarefa, defina a maxWallClockTime restrição. Use essa configuração para encerrar tarefas que não estão em andamento.

Quando a tarefa excede o tempo máximo:

  • A tarefa está marcada como concluída.
  • O código de saída é definido como 0xC000013A.
  • O campo schedulingError está marcado como { category:"ServerError", code="TaskEnded"}.

Códigos de saída da tarefa

Quando uma tarefa executa um processo, o Batch preenche a propriedade de código de saída da tarefa com o código de retorno do processo. Se o processo retornar um código de saída diferente de zero, o serviço do Lote marcará a tarefa como tendo falhado.

O serviço Batch não determina o código de saída de uma tarefa. O processo em si, ou o sistema operacional no qual o processo é executado, determina o código de saída.

Falhas ou interrupções de tarefa

As tarefas podem falhar ocasionalmente ou ser interrompidas. Por exemplo:

  • O aplicativo de tarefa em si pode falhar.
  • O nó no qual a tarefa está em execução pode ser reinicializado.
  • Uma operação de redimensionar pode remover o nó do pool. Essa ação poderá acontecer se a política de desalocação do pool remover os nós imediatamente sem aguardar a conclusão das tarefas.

Em todos os casos, o Lote pode ser automaticamente recolocar a tarefa na fila para execução em outro nó.

Também é possível que um problema intermitente faça com que uma tarefa pare de responder ou demorou muito para ser executada. Você pode definir um intervalo de execução máximo para uma tarefa. Se uma tarefa exceder o intervalo, o serviço Batch interromperá o aplicativo da tarefa.

Conectar-se aos nós de computação

Você pode executar a depuração e a solução de problemas entrando em um nó de computação remotamente. Utilize o portal do Azure para baixar um arquivo RDP (Protocolo de Área de Trabalho Remota) para nós do Windows e obter informações de conexão do Secure Shell (SSH) para nós do Linux. Você também pode baixar essas informações usando as APIs Batch .NET ou Batch Python.

Para se conectar a um nó via RDP ou SSH, primeiro crie um usuário no nó. Use um dos seguintes métodos:

Se necessário, configure ou desabilite o acesso aos nós de computação.

Solucionar problemas de nós de problema

O serviço ou aplicativo cliente do Lote pode examinar os metadados das tarefas com falha para identificar um nó com problema. Cada nó em um pool tem uma ID exclusiva. Os metadados da tarefa incluem o nó em que uma tarefa é executada. Depois de localizar o nó com problema, tente os métodos a seguir para resolver a falha.

Reinicializar nó

Às vezes, reiniciar o nó corrige problemas latentes, como processos bloqueados ou com falha. Se o pool usar uma tarefa de inicialização ou se o trabalho usar uma tarefa de preparação de trabalho, reiniciar o nó executa essas tarefas.

Refazer imagem do nó

Refazer a imagem do nó reinstala o sistema operacional. Tarefas de início e tarefas de preparação de trabalho são executadas novamente após a imagem ser refeita.

Remover nó do pool

Às vezes é necessário remover o nó do pool.

Desabilitar agendamento de tarefas no nó

Desabilitar o agendamento de tarefas em um nó efetivamente coloca o nó no modo offline. O Lote não atribui mais nenhuma tarefa ao nó. Porém, o nó continua sendo executado no pool. Em seguida, você pode investigar ainda mais as falhas sem perder os dados da tarefa com falha. O nó também não causará mais falhas nas tarefas.

Por exemplo, desabilite o agendamento de tarefa no nó. Então entre no nó remotamente. Examine os logs de eventos e realize outras tarefas de solução de problemas. Depois de resolver os problemas, habilite o agendamento de tarefa novamente para colocar o nó no modo online outra vez.

Você pode usar estas ações para especificar como o Batch gerencia tarefas que estão atualmente em execução no nó. Por exemplo, quando você desabilita o agendamento de tarefas em um nó com uma API do .NET do Lote, pode especificar um valor de enumeração para DisableComputeNodeSchedulingOption. Você pode optar por:

  • Encerrar tarefas em execução: Terminate
  • Recolocar as tarefas em fila para agendamento em outros nós: Requeue
  • Permitir que as tarefas em execução sejam concluídas antes de executar a ação: TaskCompletion

Tentar novamente após erros

As APIs em lote notificam-no sobre falhas. Você pode repetir todas as APIs usando o manipulador de repetição global interno. É uma prática recomendada usar essa opção.

Após uma falha, aguarde vários segundos antes de tentar novamente. Se você tentar com muita frequência ou muito rapidamente, o gerenciador de novas tentativas limitará as solicitações.

Próximas etapas