Solução de problemas

Nesta página, mostramos como resolver problemas com o Batch.

Se você estiver tentando resolver um problema de um job sem uma mensagem de erro, verifique se o histórico do job contém mensagens de erro visualizando eventos de status antes de analisar este documento.

Para mais informações sobre como solucionar problemas de um job, consulte também os seguintes documentos:

Erros de criação de jobs

Se não for possível criar um job, talvez seja por causa de um dos erros nesta seção.

Cota insuficiente

Problema

Um dos seguintes problemas ocorre quando você tenta criar uma tarefa:

  • Quando o job está no estado QUEUED, o seguinte problema aparece no campo statusEvents:

    Quota checking process decides to delay scheduling for the job JOB_UID due to inadequate quotas [Quota: QUOTA_NAME, limit: QUOTA_LIMIT, usage: QUOTA_CURRENT_USAGE, wanted: WANTED_QUOTA.].
    

    Esse problema indica que o job foi atrasado porque o uso atual (QUOTA_USAGE) e o limite (QUOTA_LIMIT) da cota QUOTA_NAME impediram o uso solicitado do job (WANT_QUOTA).

  • Quando o job está nos estados QUEUED, SCHEDULED ou FAILED, um dos seguintes problemas aparece no campo statusEvents:

    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in region REGION
    
    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in zone ZONE
    

    Esse problema indica que a criação de um recurso falhou porque a solicitação excedeu sua cota QUOTA_NAME, que tem um limite de QUOTA_LIMIT no local especificado.

Solução

Para resolver o problema, faça o seguinte:

  • Se o job atrasou, aguarde até que mais cota seja liberada.

  • Se o job falhar devido à cota insuficiente ou se esses atrasos persistirem, tente evitar cota insuficiente seguindo um destes procedimentos:

    • Criar jobs que usem menos dessa cota ou uma cota diferente. Por exemplo, especifique um local permitido ou um tipo de recurso diferente para o job ou divida o uso da cota entre outros projetos.

    • Solicite um limite de cota maior para seu projeto no Google Cloud.

Para mais informações, consulte Cotas e limites em lote e Trabalhar com cotas.

Permissões insuficientes para atuar como conta de serviço

Problema

O seguinte problema ocorre quando você tenta criar uma tarefa:

  • Se o job não usar um modelo de instância, o problema aparecerá assim:

    caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
    
  • Se o job usar um modelo de instância, o problema aparecerá assim:

    Error: code - CODE_SERVICE_ACCOUNT_MISMATCH, description - The service account specified in the instance template INSTANCE_TEMPLATE_SERVICE_ACCOUNT doesn't match the service account specified in the job JOB_SERVICE_ACCOUNT for JOB_UID, project PROJECT_NUMBER
    

Esse problema geralmente ocorre porque o usuário que cria o job não tem permissões suficientes para atuar como a conta de serviço usada pelo job, que é controlada pela permissão iam.serviceAccounts.actAs.

Solução

Para resolver o problema, faça o seguinte:

  1. Se o job usar um modelo de instância, verifique se a conta de serviço especificada no modelo corresponde à conta de serviço especificada na definição do job.
  2. Verifique se o usuário que está criando o job recebeu o papel Usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço especificada para o job. Para mais informações, consulte Gerenciar acesso.
  3. Recrie o job.

Redes repetidas

Problema

O seguinte problema ocorre quando você tenta criar uma tarefa:

Networks must be distinct for NICs in the same InstanceTemplate

Esse problema ocorre porque você especificou a rede para um trabalho mais de uma vez.

Solução

Para resolver o problema, recrie o job e especifique a rede usando uma das seguintes opções:

Para mais informações, consulte Especificar a rede para um job.

Rede inválida para VPC Service Controls

Problema

O seguinte problema ocorre quando você tenta criar uma tarefa:

no_external_ip_address field is invalid. VPC Service Controls is enabled for the project, so external ip address must be disabled for the job. Please set no_external_ip_address field to be true

Solução

Esse problema ocorre porque você está tentando criar e executar um job com VMs que têm endereços IP externo em um perímetro de serviço do VPC Service Controls.

Para resolver o problema, crie um job que bloqueie o acesso externo de todas as VMs.

Para mais informações sobre como configurar a rede para um job em um perímetro de serviço do VPC Service Controls, consulte Usar VPC Service Controls com lote.

Problemas de job e erros de falha

Se você tiver problemas com um job que não está sendo executado corretamente ou falhou por motivos pouco claros, isso pode ser devido a um dos erros nesta seção ou a um dos códigos de saída na seção Códigos de saída de falha em tarefas a seguir.

Nenhum registro no Cloud Logging

Problema

Você precisa depurar um job, mas nenhum registro dele aparece no Cloud Logging.

Esse problema geralmente ocorre pelos seguintes motivos:

  • A API Cloud Logging não está ativada para seu projeto. Mesmo que você configure corretamente todo o restante para os registros de um job, ele não produzirá registros se o serviço não estiver ativado para o projeto.
  • A conta de serviço do job não tem permissão para gravar registros. Um job não pode produzir registros sem permissões suficientes.
  • O job não foi configurado para produzir registros. Para produzir registros no Cloud Logging, um job precisa ter o Cloud Logging ativado. Os executáveis do job também precisam ser configurados para gravar as informações que você quiser que apareçam nos registros para os streams de saída padrão (stdout) e de erro padrão (stderr). Para mais informações, consulte Analisar um job usando registros.
  • As tarefas não foram executadas. Os registros não podem ser produzidos até que as tarefas tenham sido atribuídas recursos e comecem a ser executadas.
  • O Cloud Logging foi configurado para excluir automaticamente os registros do job. Os registros de jobs do Batch não podem aparecer se você tiver configurado filtros de exclusão para o Cloud Logging que fazem com que os registros de jobs do Batch sejam excluídos.

Solução

Para resolver esse problema, faça o seguinte:

  1. Verifique se os registros não foram excluídos automaticamente do Cloud Logging desativando todos os filtros de exclusão atuais do Cloud Logging.
  2. Verifique se a API Cloud Logging está ativada para seu projeto.
  3. Verifique se a conta de serviço do job tem o papel do IAM de Gravador de registros (roles/logging.logWriter). Para mais informações, consulte Ativar o Batch para um projeto.
  4. Visualize os detalhes do job usando a CLI gcloud ou a API Batch. Os detalhes do job podem ajudar você a entender por que ele não produziu registros e podem fornecer as informações que você esperava conseguir dos registros. Por exemplo, faça o seguinte:
    1. Para verificar se a geração de registros está ativada, revise o campo logsPolicy do job.
    2. Para verificar se o job foi concluído com sucesso, consulte o campo status.

Depois de fazer as alterações, recrie o job e aguarde a conclusão da execução antes de verificar os registros.

Nenhum relatório de agente de serviço

Problema

O problema a seguir aparece no campo statusEvents de um job que não está sendo executado corretamente ou falhou antes da criação das VMs:

No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start

O problema indica que nenhuma das VMs de um job está gerando relatórios para o agente de serviço em lote.

Esse problema geralmente ocorre pelos seguintes motivos:

  • As VMs do job não têm permissões suficientes. As VMs de um job exigem permissões específicas para informar o estado ao agente de serviço do Batch. É possível fornecer essas permissões para as VMs de um job concedendo o papel de relatório do Batch Agent (roles/batch.agentReporter) à conta de serviço do job.
  • As VMs do job têm problemas de rede. As VMs de um job exigem acesso à rede para se comunicar com o agente de serviço do Batch.
  • As VMs do job estão usando uma imagem desatualizada do SO da VM do Batch ou uma imagem do SO da VM com o software agente de serviço do Batch desatualizado. As VMs do job exigem um software na imagem do SO da VM que forneça as dependências atuais para gerar relatórios ao agente de serviço em lote.

Solução

Para resolver o problema, faça o seguinte:

  1. Verifique se as VMs do job têm as permissões necessárias para relatar o estado ao agente de serviço do Batch.

    1. Para identificar a conta de serviço do job, veja os detalhes do job usando a CLI gcloud ou a API Batch. Se nenhuma conta de serviço estiver listada, o job usará a conta de serviço padrão do Compute Engine por padrão.
    2. Confirme se a conta de serviço do job tem permissões para o papel de relatório de agente do Batch (roles/batch.agentReporter). Para mais informações, consulte Gerenciar acesso e Como restringir o uso da conta de serviço.

      Por exemplo, para conceder as permissões necessárias à conta de serviço padrão do Compute Engine, use o seguinte comando:

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/batch.agentReporter \
        --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
      
  2. Verificar se as VMs do job têm acesso adequado à rede. Para mais informações, consulte Visão geral da rede em lote e Resolver problemas comuns de rede.

  3. Se você especificou a imagem do SO da VM para o job, verifique se essa imagem é compatível no momento.

    1. Se você ativou o Cloud Logging para o job, identifique esse problema verificando qualquer um dos seguintes registros de agente (batch_agent_logs). Para mais informações, consulte Analisar um job usando registros.

      • Registro do erro de software do agente de serviço do Batch desatualizado:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
        

        O BATCH_AGENT_VERSION é a versão do software para se comunicar com o agente de serviço do Batch que o job usa, por exemplo, cloud-batch-agent_20221103.00_p00.

      • Registro de erro de imagem do SO da VM em lote desatualizada:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
        

        O BATCH_VM_OS_IMAGE_NAME é a versão específica de uma imagem do SO da VM do Batch que o job usa, por exemplo, batch-debian-11-20220909-00-p00.

    2. Resolva esse problema usando uma imagem mais recente do SO da VM. Se o job usar uma imagem personalizada, recrie-a com base em uma das versões mais recentes de uma imagem pública compatível.

      Para mais informações, consulte Imagens do SO da VM compatíveis e Ver imagens do SO da VM.

  4. Recrie o job.

Métricas de recursos ausentes no Cloud Monitoring

Problema

Você quer ver métricas de recursos de um job, mas algumas ou todas as métricas esperadas estão ausentes.

Esse problema geralmente ocorre pelos seguintes motivos:

  • A API não foi ativada no seu projeto. Mesmo que você configure corretamente todo o restante no projeto, as métricas de recursos podem não aparecer até que a API Cloud Monitoring seja ativada. Para o Agente de operações, você também precisa ativar a API Cloud Logging.
  • Você não tem permissões suficientes para visualizar as métricas. Não é possível visualizar métricas sem permissões suficientes.
  • As VMs do job não foram executadas. As métricas não podem ser produzidas para um job até que pelo menos uma das VMs dele esteja em execução.
  • A configuração ou as permissões do job não eram compatíveis com as métricas do Agente de operações. Algumas métricas de recursos só podem ser fornecidas pelo Agente de operações. Para oferecer suporte às métricas do Agente de operações, um job precisa atender aos requisitos do Agente de operações, instalá-lo e usar uma conta de serviço que possa gravar métricas no Monitoring.
  • Você precisa usar um método ou filtro diferente para conferir as métricas. Alguns métodos para visualizar métricas não exibem métricas das VMs após a exclusão delas. Além disso, as métricas não serão exibidas se forem omitidas pelos filtros ou pelo período exibido. Além disso, os gráficos de métricas têm resoluções ajustáveis, o que pode fazer com que pequenas quantidades de dados sejam muito finas para serem exibidas.
  • As métricas foram excluídas. Não é possível ver as métricas depois de excluí-las, o que acontece automaticamente após os períodos de armazenamento do Monitoring.

Solução

Se apenas as métricas do Agente de operações estiverem ausentes, primeiro tente resolver o problema da seguinte forma:

  1. Para verificar a configuração do job, faça o seguinte:
    1. Para ver as informações de configuração completas do job, visualize os detalhes do job usando a CLI gcloud ou a API Batch. Use a saída para as etapas restantes.
    2. Verifique se a conta de serviço do job tem as permissões para gravar métricas do Agente de operações.
    3. Verifique se o job atende a todos os requisitos do Agente de operações.
    4. Verifique se o job instala corretamente o Agente de operações. Embora seja possível instalar o Agente de operações manualmente em um executável, o método recomendado é fazer a instalação automática definindo o campo installOpsAgent como true.
  2. Se o problema persistir, consulte Resolver problemas do Agente de operações na documentação de observabilidade do Google Cloud.

Caso contrário, resolva o problema fazendo o seguinte:

  1. Verifique se a API Monitoring está ativada para seu projeto:

    Ative a API

  2. Verifique se as VMs do job começaram a ser executadas e se o ambiente de execução ainda está dentro dos períodos de armazenamento do Monitoring. Para saber o ambiente de execução do job, consulte os detalhes.
  3. Para verificar se há problemas com os métodos usados para conferir as métricas, faça o seguinte:
    1. A menos que você queira ver métricas apenas para recursos em execução, verifique se está visualizando métricas usando o Metrics Explorer ou um painel personalizado criado com base nos gráficos do Metrics Explorer. Outros métodos, como os painéis do Compute Engine, não exibem métricas de recursos que foram excluídos.
    2. Verifique se o período de exibição inclui o ambiente de execução do job. Para gráficos, verifique também se a resolução do gráfico é adequada para seus dados.
    3. Verifique se não há filtros que estejam ocultando os dados.
  4. Se o problema persistir, consulte as páginas Resolver problemas do Cloud Monitoring na documentação de observabilidade do Google Cloud.

Restrição violada para endereços IP externo da VM

Problema

O seguinte problema aparece no campo statusEvents de um job com falha:

Instance VM_NAME creation failed: Constraint constraints/compute.vmExternalIpAccess violated for project PROJECT_NUMBER.
Add instance VM_NAME to the constraint to use external IP with it.

Esse problema ocorre porque seu projeto, pasta ou organização definiu a restrição de política organizacional compute.vmExternalIpAccess para que apenas VMs na lista de permissões possam usar endereços IP externo.

Solução

Para resolver o problema, recrie o job e realize uma das seguintes ações:

Restrição violada para imagens confiáveis

Problema

O seguinte problema aparece no campo statusEvents de um job com falha:

Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.

Solução

Esse problema ocorre porque seu projeto definiu a restrição da política de imagens confiáveis (compute.trustedImageProjects) para que as imagens do Batch, que estão no projeto batch-custom-image, não sejam permitidas.

Para resolver o problema, realize pelo menos uma das seguintes ações:

Falha no job ao usar um modelo de instância

Problema

O problema a seguir aparece no campo statusEvents de um job com falha que usa um modelo de instância:

INVALID_FIELD_VALUE,BACKEND_ERROR

Isso ocorre devido a problemas pouco claros com o modelo de instância do job.

Solução

Para depurar o problema, faça o seguinte:

  1. Crie um MIG usando o modelo de instância e observe se ocorrem erros com mais detalhes.
  2. Opcional: para tentar encontrar mais informações, consulte a operação de longa duração que está criando o MIG no console do Google Cloud.

    Acessar Operações do Compute Engine

Códigos de saída de falha na tarefa

Quando uma tarefa específica em um job falha, ela retorna um código de saída diferente de zero. Dependendo de como você configurar o campo ignoreExitStatus, uma tarefa com falha pode ou não causar a falha de um job.

Além dos códigos de saída que você define em um executável, um lote tem vários códigos de saída reservados, incluindo os códigos de saída a seguir.

Preempção da VM (50001)

Problema

O problema a seguir aparece no campo statusEvents de uma vaga:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.

Esse problema ocorre quando uma VM spot para o job é interrompida durante o ambiente de execução.

Solução

Para resolver o problema, siga um destes procedimentos:

Tempo limite de relatórios da VM (50002)

Problema

O problema a seguir aparece no campo statusEvents de uma vaga:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Batch no longer receives VM updates with exit code 50002.

Esse problema ocorre quando há um tempo limite no back-end que fez com que uma VM para o job não recebesse mais atualizações.

Solução

Para resolver esse problema, tente realizar a tarefa novamente usando novas tentativas automatizadas de tarefas ou executando novamente o job de forma manual.

VM reinicializada durante a execução (50003)

Problema

O problema a seguir aparece no campo statusEvents de uma vaga:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is rebooted during task execution with exit code 50003.

Esse problema ocorre quando a VM de um job é reinicializada inesperadamente durante a execução.

Solução

Para resolver esse problema, tente realizar a tarefa novamente usando novas tentativas automatizadas de tarefas ou executando novamente o job de forma manual.

A VM e a tarefa não respondem (50004)

Problema

O problema a seguir aparece no campo statusEvents de uma vaga:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to tasks cannot be canceled with exit code 50004.

Esse problema ocorre quando uma tarefa atinge o limite de tempo sem resposta e não pode ser cancelada.

Solução

Para resolver esse problema, tente realizar a tarefa novamente usando novas tentativas automatizadas de tarefas ou executando novamente o job de forma manual.

A tarefa é executada acima do tempo de execução máximo (50005)

Problema

O problema a seguir aparece no campo statusEvents de uma vaga:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to task runs over the maximum runtime with exit code 50005.

Esse problema ocorre nos seguintes casos:

  • O tempo de execução de uma tarefa excede o limite de tempo especificado no campo maxRunDuration.
  • O tempo de execução de um executável excede o limite especificado no campo timeout.

Para identificar especificamente qual limite de tempo foi excedido, consulte os registros do job e encontre um registro que mencione o código de saída 50005. O campo textPayload desse registro indica onde e quando o limite de tempo foi excedido.

Solução

Para resolver o problema, tente verificar o tempo total de execução exigido pela tarefa ou executável que excedeu o limite de tempo. Em seguida, execute um destes procedimentos:

  • Se você só espera esse erro ocasionalmente, como em uma tarefa ou executável com um tempo de execução inconsistente, tente recriar o job e configurá-lo para automatizar novas tentativas de tarefas e tentar aumentar a taxa de sucesso.

  • Caso contrário, se a tarefa ou o executável precisar de mais tempo para concluir a execução de forma consistente e intencional, defina um tempo limite maior.

VM recriada durante a execução (50006)

Problema

O problema a seguir aparece no campo statusEvents de uma vaga:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is recreated during task execution with exit code 50006.

Esse problema ocorre quando a VM de um job é recriada inesperadamente durante a execução.

Solução

Para resolver esse problema, tente realizar a tarefa novamente usando novas tentativas automatizadas de tarefas ou executando novamente o job de forma manual.

A seguir