Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Às vezes, você pode precisar lidar com falhas de tarefas e aplicativos em sua solução de Lote do Azure. Este artigo explica os diferentes tipos de erros de lote 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 à limitação. Esses erros incluem respostas HTTP com código de status
429ou503com o cabeçalhoRetry-after. -
4xxerros comoAlreadyExistseInvalidOperation. 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 Estado 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 agendamento.
Falhas de aplicativos
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 Batch 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 Ficheiros e diretórios no Batch.
Para baixar esses arquivos de saída, use o portal do Azure ou um dos SDKs em lote. Por exemplo, para recuperar arquivos para fins de solução de problemas, use ComputeNode.GetNodeFile e CloudTask.GetNodeFile na biblioteca .NET em lote.
Erros de tarefa
Os erros de tarefas dividem-se 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 podem ocorrer se:
- Os arquivos de recursos da tarefa foram movidos.
- A conta de armazenamento não está mais disponível.
- Outro problema surgiu que bloqueou a cópia com sucesso de ficheiros para o nó.
Erros de carregamento de ficheiros
Se os arquivos especificados para uma tarefa não forem carregados por qualquer motivo, um erro de carregamento de arquivo será definido para a tarefa. Podem ocorrer erros de carregamento de ficheiros 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 está mais disponível.
- Outro problema aconteceu que impediu a cópia bem-sucedida de arquivos do nó.
Erros de aplicação
O processo especificado pela linha de comando da tarefa também pode falhar. Para obter mais informações, consulte Códigos de saída de tarefas.
Para erros de aplicativo, configure o Batch para repetir automaticamente a tarefa até um número especificado de vezes.
Erros de restrição
Para especificar a duração máxima de execução de um trabalho ou tarefa, defina a maxWallClockTime restrição. Use essa configuração para encerrar tarefas que não progridem.
Quando a tarefa exceder o tempo máximo:
- A tarefa é 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 Batch 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 em lote marcará a tarefa como falha.
O serviço Batch não determina o código de saída de uma tarefa. O próprio processo, ou o sistema operacional no qual o processo é executado, determina o código de saída.
Falhas ou interrupções de tarefas
As tarefas podem, ocasionalmente, falhar ou ser interrompidas. Por exemplo:
- O próprio aplicativo de tarefa pode falhar.
- O nó no qual a tarefa está a ser executada pode reiniciar.
- Uma operação de redimensionamento pode remover o nó do pool. Essa ação pode acontecer se a política de desalocação do pool remover os nós imediatamente, sem esperar que as tarefas sejam concluídas.
Em todos os casos, o Batch pode reenfileirar automaticamente a tarefa para execução num 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 para uma tarefa. Se uma tarefa exceder o intervalo, o serviço Batch interromperá o aplicativo da tarefa.
Conectar-se a nós de computação
Pode executar a depuração e a resolução de problemas ao aceder remotamente a um nó de processamento. Utilize o portal do Azure para baixar um arquivo RDP (Protocolo de Área de Trabalho Remota) para nodos Windows e obter informações de conexão do Secure Shell (SSH) para nodos 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 utilizador no nó. Use um dos seguintes métodos:
- O portal do Azure
- API REST em lote: adduser
- API .NET em lote: ComputeNode.CreateComputeNodeUser
- Módulo Python em lote: add_user
Se necessário, configure ou desative o acesso aos nós de computação.
Solucionar problemas em nós problemáticos
A sua aplicação ou serviço cliente Batch pode examinar os metadados de tarefas falhadas para identificar um nó problemático. Cada nó em um pool tem uma ID exclusiva. Os metadados da tarefa incluem o nó onde uma tarefa é executada. Depois de encontrar o nó do problema, tente os seguintes métodos para corrigir a falha.
Reiniciar nó
A reinicialização de um nó às vezes corrige problemas latentes, como processos encravados ou parados. Se o pool utilizar uma tarefa de arranque, ou se o trabalho utilizar uma tarefa de preparação de trabalho, a reinicialização do nó irá executar essas tarefas.
- API REST em lote: reinicialização
- API .NET em lote: ComputeNode.Reboot
Reinstalar imagem do nó
A reimagem de um nó reinstala o sistema operativo. As tarefas normais e as tarefas de preparação de trabalho são executadas novamente após a reimagem.
- API REST em lote: reimage
- API .NET em lote: ComputeNode.Reimage
Remover nó do pool
Às vezes, é necessário remover o nó do pool.
- API REST em lote: removenodes
- API .NET para Processamento em Lote: PoolOperations
Desativar o agendamento de tarefas no nó
A desativação do agendamento de tarefas num nó coloca efetivamente o nó offline. O conjunto não atribui mais nenhuma tarefa ao nó. No entanto, o nó continua em execução no pool. Em seguida, você pode investigar melhor as falhas sem perder os dados da tarefa com falha. O nó também não causará mais falhas de tarefa.
Por exemplo, desative o agendamento de tarefas no nó. Em seguida, entre no nó remotamente. Examine os logs de eventos e faça outras soluções de problemas. Depois de resolver os problemas, habilite o agendamento de tarefas novamente para colocar o nó online novamente.
- API REST em lote: ativar agendamento
- API .NET para processamento em lote: ComputeNode.EnableScheduling
Pode utilizar estas ações para especificar que o Batch gere tarefas que estão atualmente em execução no nó. Por exemplo, ao desabilitar o agendamento de tarefas com a API .NET em lote, você pode especificar um valor de enum para DisableComputeNodeSchedulingOption. Pode optar por:
- Encerrar tarefas em execução:
Terminate - Reenfileire tarefas para agendamento em outros nós:
Requeue - Permitir que as tarefas em execução sejam concluídas antes de executar a ação:
TaskCompletion
Repetir após erros
APIs em lote notificam 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 alguns segundos antes de tentar novamente. Se tentares novamente com demasiada frequência ou rapidez, o gestor de tentativas limitará as solicitações.