Compartilhar via


Tratamento e detecção de erro no Lote do Azure

Às vezes, você pode precisar manipular falhas de aplicativo e tarefa na sua solução do Lote do Azure. Este artigo explica os diferentes tipos de erros do Lote e como resolver problemas comuns.

Códigos de erro

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

  • Falhas de rede para solicitações que nunca chegaram ao Lote ou falhas de rede quando a resposta do Lote não chegou ao cliente a tempo.
  • Erros internos do servidor. Esses erros têm uma resposta HTTP de código de status 5xx padrão.
  • Erros relacionados a limitação. Esses erros incluem respostas HTTP do 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 a API REST, o serviço em lote e para tarefas de trabalho e agendamento.

Falhas de aplicativo

Durante a execução, um aplicativo pode produzir uma 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, confira Arquivos e diretórios no Lote.

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

Erros de tarefa

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

Erros de pré-processamento

Se uma tarefa não for iniciada, um erro de pré-processamento é 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 estiver mais disponível.
  • Aconteceu outro problema que impediu a cópia bem-sucedida dos arquivos para o nó.

Erros de upload de arquivo

Se o carregamento de arquivos especificados para uma tarefa falhar por algum motivo, um erro de carregamento de arquivo é definido para a tarefa. Erros de upload de arquivo poderão ocorrer se:

  • O token de assinatura de acesso compartilhado (SAS) 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 estiver 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, confira Código de saída da tarefa.

Para os erros do aplicativo, configure o Lote para repetir automaticamente a tarefa até um número especificado de vezes.

Erros da restrição

Para especificar a duração máxima da execução de um trabalho ou de uma tarefa, defina a restrição maxWallClockTime. Use essa configuração para terminar tarefas que falham em progredir.

Quando a tarefa excede o tempo máximo:

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

Códigos de saída de tarefas

Quando uma tarefa executa um processo, o Lote preenche a propriedade do 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 do Lote não determina o código de saída da tarefa. O processo em si, ou o sistema operacional em que o processo é executado, determina o código de saída.

Interrupções ou falhas de tarefas

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

  • O aplicativo de tarefa em si poderá 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 demore muito para ser executada. Você pode definir um intervalo máximo de execução de uma tarefa. Se uma tarefa exceder o intervalo, o serviço do Lote interromperá o aplicativo da tarefa.

Conectar-se a 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. Use o portal do Azure para baixar um arquivo RDP (Remote Desktop Protocol) para os nós do Windows e obter informações da conexão SSH (Secure Shell) para os nós do Linux. Você também pode baixar essas informações usando as APIs .NET do Lote ou Python do Lote.

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

Se necessário, configure ou desative 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 que apresentou a 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 outra 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 essas ações para especificar como o Lote manipula tarefas 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 as 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 do Lote o notificarão sobre falhas. Você pode repetir todas as APIs usando o manipulador de repetição global integrado. É uma melhor prática usar essa opção.

Após uma falha, aguarde vários segundos antes de tentar novamente. Se você tentar novamente com muita frequência ou rapidamente, o manipulador de repetição limitará solicitações.

Próximas etapas