Resolução de problemas

Esta página mostra como resolver problemas com o processamento em lote.

Se estiver a tentar resolver problemas de uma tarefa para a qual não tem uma mensagem de erro, verifique se o histórico da tarefa contém mensagens de erro vendo os eventos de estado antes de rever este documento.

Para mais informações sobre a resolução de problemas de uma tarefa, consulte também os seguintes documentos:

Erros de criação de tarefas

Se não conseguir criar uma tarefa, tal pode dever-se a um dos erros nesta secção.

Quota insuficiente

Problema

Ocorre um dos seguintes problemas quando tenta criar uma tarefa:

  • Quando a tarefa está no estado QUEUED, o seguinte problema é apresentado 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.].
    

    Este problema indica que a tarefa foi atrasada porque a utilização atual (QUOTA_USAGE) e o limite (QUOTA_LIMIT) da quota de QUOTA_NAME impediram a utilização pedida (WANT_QUOTA) da tarefa.

  • Quando a tarefa está nos estados QUEUED, SCHEDULED ou FAILED, um dos seguintes problemas é apresentado 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
    

    Este problema indica que a criação de um recurso falhou porque o pedido excedeu a sua quota de QUOTA_NAME, que tem um limite de QUOTA_LIMIT na localização especificada.

Solução

Para resolver o problema, faça o seguinte:

  • Se a tarefa tiver sido atrasada, tente aguardar que seja libertada mais quota.

  • Se a tarefa falhou devido a uma quota insuficiente ou se estes atrasos persistirem, tente evitar uma quota insuficiente fazendo qualquer uma das seguintes ações:

    • Crie tarefas que usem menos dessa quota ou uma quota diferente. Por exemplo, especifique uma localização ou um tipo de recurso permitido diferente para a tarefa ou divida a utilização da quota por projetos adicionais.

    • Peça um limite de quota superior para o seu projeto a partir de Google Cloud.

Para mais informações, consulte os artigos Quotas e limites de lotes e Trabalhe com quotas.

Autorizações insuficientes para agir em nome da conta de serviço

Problema

O seguinte problema ocorre quando tenta criar uma tarefa:

  • Se a tarefa não usar um modelo de instância, o problema aparece da seguinte forma:

    caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
    
  • Se a tarefa usar um modelo de instância, o problema aparece da seguinte forma:

    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
    

Normalmente, este problema ocorre porque o utilizador que cria a tarefa não tem autorizações suficientes para agir como a conta de serviço usada pela tarefa, que é controlada pela autorização iam.serviceAccounts.actAs.

Solução

Para resolver o problema, faça o seguinte:

  1. Se a tarefa usar um modelo de instância, verifique se a conta de serviço especificada no modelo de instância corresponde à conta de serviço especificada na definição da tarefa.
  2. Certifique-se de que o utilizador que está a criar a tarefa recebeu a função de utilizador da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço especificada para a tarefa. Para mais informações, consulte o artigo Faça a gestão do acesso.
  3. Recrie a tarefa.

Redes repetidas

Problema

O seguinte problema ocorre quando tenta criar uma tarefa:

Networks must be distinct for NICs in the same InstanceTemplate

Este problema ocorre porque especificou a rede para uma tarefa mais do que uma vez.

Solução

Para resolver o problema, recrie a tarefa e especifique a rede através de uma das seguintes opções:

Para mais informações, consulte o artigo Especifique a rede para uma tarefa.

Rede inválida para os VPC Service Controls

Problema

O seguinte problema ocorre quando 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

Este problema ocorre porque está a tentar criar e executar uma tarefa com VMs que têm endereços IP externos num perímetro de serviço do VPC Service Controls.

Para resolver o problema, crie uma tarefa que bloqueie o acesso externo para todas as VMs.

Para mais informações sobre como configurar a rede para uma tarefa num perímetro de serviço do VPC Service Controls, consulte o artigo Use o VPC Service Controls com o Batch.

Problemas de tarefas e erros de falha

Se tiver problemas com uma tarefa que não está a ser executada corretamente ou falhou por motivos pouco claros, pode dever-se a um dos erros nesta secção ou a um dos códigos de saída na secção Códigos de saída de falha da tarefa seguinte.

Sem registos no Cloud Logging

Problema

Tem de depurar uma tarefa, mas não aparecem registos da tarefa no Cloud Logging.

Este problema ocorre frequentemente pelos seguintes motivos:

  • A API Cloud Logging não está ativada para o seu projeto. Mesmo que configure corretamente tudo o resto para os registos de uma tarefa, esta não produz registos se o serviço não estiver ativado para o seu projeto.
  • A conta de serviço da tarefa não tem autorização para escrever registos. Uma tarefa não pode produzir registos sem autorizações suficientes.
  • A tarefa não foi configurada para produzir registos. Para produzir registos no Cloud Logging, uma tarefa tem de ter o Cloud Logging ativado. Os elementos executáveis da tarefa também devem ser configurados para escrever todas as informações que quer que apareçam nos registos para a saída padrão (stdout) e as streams de erro padrão (stderr). Para mais informações, consulte o artigo Analise uma tarefa através de registos.
  • O Tasks não foi executado. Não é possível produzir registos até que sejam atribuídos recursos às tarefas e estas comecem a ser executadas.
  • O Cloud Logging foi configurado para excluir automaticamente os registos da tarefa. Os registos de tarefas em lote não podem aparecer se tiver configurado filtros de exclusão para o Cloud Logging que fazem com que os registos de tarefas em lote sejam excluídos.

Solução

Para resolver este problema, faça o seguinte:

  1. Certifique-se de que os registos não foram excluídos automaticamente do Cloud Logging desativando todos os filtros de exclusão atuais do Cloud Logging.
  2. Certifique-se de que a API Cloud Logging está ativada para o seu projeto.
  3. Certifique-se de que a conta de serviço da tarefa tem a função de IAM Escritor de registos (roles/logging.logWriter). Para mais informações, consulte o artigo Ative o Batch para um projeto.
  4. Veja os detalhes da tarefa através da CLI gcloud ou da API Batch. Os detalhes da tarefa podem ajudar a compreender por que motivo a tarefa não produziu registos e podem fornecer informações que esperava obter dos registos. Por exemplo, faça o seguinte:
    1. Para verificar se o registo está ativado, reveja o campo logsPolicy do trabalho.
    2. Para verificar se a execução da tarefa foi concluída com êxito, reveja o campo status da tarefa.

Depois de fazer alterações, recrie a tarefa e aguarde que a tarefa termine a execução antes de verificar os registos.

Nenhum relatório de agente do serviço

Problema

O seguinte problema aparece no campo statusEvents para uma tarefa que não está a ser executada 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 uma tarefa está a comunicar com o agente do serviço Batch.

Este problema ocorre frequentemente pelos seguintes motivos:

  • As VMs da tarefa não têm autorizações suficientes. As VMs de uma tarefa requerem autorizações específicas para comunicar o respetivo estado ao agente do serviço Batch. Pode conceder estas autorizações para as VMs de uma tarefa concedendo a função Batch Agent Reporter (roles/batch.agentReporter) à conta de serviço da tarefa.
  • As VMs da tarefa têm problemas de rede. As VMs de uma tarefa requerem acesso à rede para comunicar com o agente do serviço Batch.
  • As VMs da tarefa estão a usar uma imagem do SO da VM do Batch desatualizada ou a usar uma imagem do SO da VM com software do agente do serviço Batch desatualizado. As VMs da tarefa requerem software na respetiva imagem do SO da VM que forneça as dependências atuais para a criação de relatórios ao agente do serviço Batch.

Solução

Para resolver o problema, faça o seguinte:

  1. Verifique se as VMs da tarefa têm as autorizações necessárias para comunicar o respetivo estado ao agente do serviço Batch.

    1. Para identificar a conta de serviço da tarefa, veja os detalhes da tarefa através da CLI gcloud ou da API Batch. Se não for apresentada nenhuma conta de serviço, a tarefa usa a conta de serviço predefinida do Compute Engine por predefinição.
    2. Confirme que a conta de serviço da tarefa tem autorizações para a função Agente de relatórios em lote (roles/batch.agentReporter). Para mais informações, consulte os artigos Gerir acesso e Restringir a utilização da conta de serviço.

      Por exemplo, para conceder à conta de serviço predefinida do Compute Engine as autorizações necessárias, 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. Verifique se as VMs da tarefa têm acesso adequado à rede. Para mais informações, consulte o Resumo da rede em lote e Resolva problemas comuns de rede.

  3. Se especificou a imagem do SO da VM para a tarefa, verifique se a imagem do SO da VM é atualmente suportada.

    1. Se ativou o Cloud Logging para a tarefa, pode identificar este problema verificando qualquer um dos seguintes registos do agente (batch_agent_logs). Para mais informações, consulte o artigo Analise uma tarefa através de registos.

      • Registo do erro de software do agente do serviço em lote 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 comunicar com o agente do serviço Batch que a tarefa usa, por exemplo, cloud-batch-agent_20221103.00_p00.

      • Registo do erro de imagem do SO da VM do Batch 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 de VM do Batch que a tarefa usa, por exemplo, batch-debian-11-20220909-00-p00.

    2. Pode resolver este problema usando uma imagem do SO de VM mais recente. Se a tarefa usar uma imagem personalizada, recrie a imagem personalizada com base numa das versões mais recentes de uma imagem pública suportada.

      Para mais informações, consulte os artigos Imagens de SO de VMs suportadas e Veja imagens de SO de VMs.

  4. Recrie a tarefa.

Métricas de recursos em falta no Cloud Monitoring

Problema

Quer ver métricas de recursos para uma tarefa, mas algumas ou todas as métricas esperadas estão em falta.

Este problema ocorre frequentemente pelos seguintes motivos:

  • A API não foi ativada para o seu projeto. Mesmo que configure corretamente tudo o resto no seu projeto, as métricas de recursos podem não aparecer até que a API Cloud Monitoring seja ativada. Para o agente de operações, também tem de ativar a API Cloud Logging.
  • Não tem autorizações suficientes para ver as métricas. Não pode ver métricas sem autorizações suficientes.
  • As VMs da tarefa não foram executadas. Não é possível gerar métricas para uma tarefa até que, pelo menos, uma das VMs da tarefa esteja em execução.
  • A configuração ou as autorizações da tarefa não suportavam métricas do agente de operações. Algumas métricas de recursos só podem ser fornecidas pelo agente de operações. Para suportar as métricas do Ops Agent, uma tarefa tem de cumprir os requisitos do Ops Agent, instalar o Ops Agent e usar uma conta de serviço que possa escrever métricas no Monitoring.
  • Tem de usar um método ou um filtro diferente para ver as métricas. Alguns métodos de visualização de métricas não apresentam métricas para VMs após a eliminação das VMs. Além disso, as métricas não são apresentadas se forem omitidas por filtros ou pelo período apresentado. Além disso, os gráficos de métricas têm resoluções ajustáveis que podem fazer com que pequenas quantidades de dados sejam demasiado reduzidas para serem apresentadas.
  • As métricas foram eliminadas. Não pode ver as métricas depois de serem eliminadas, o que acontece automaticamente após os períodos de retenção da monitorização.

Solução

Se apenas faltarem métricas do agente de operações, experimente primeiro resolver o problema fazendo o seguinte:

  1. Valide a configuração da tarefa fazendo o seguinte:
    1. Para ver as informações de configuração completas da tarefa, veja os detalhes da tarefa através da CLI gcloud ou da API Batch. Use o resultado para os restantes passos.
    2. Certifique-se de que a conta de serviço da tarefa tem as autorizações para escrever métricas do agente de operações.
    3. Certifique-se de que a tarefa cumpre todos os requisitos do agente de operações.
    4. Certifique-se de que a tarefa instala corretamente o agente de operações. Embora seja possível instalar o agente de operações manualmente num executável, o método recomendado é instalar automaticamente o agente de operações definindo o campo installOpsAgent como true.
  2. Se o problema persistir, consulte o artigo Resolva problemas do agente de operações na documentação do Google Cloud Observability.

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

  1. Certifique-se de que a Monitoring API está ativada para o seu projeto:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Certifique-se de que as VMs da tarefa começaram a ser executadas e que o tempo de execução ainda está dentro dos períodos de retenção da monitorização. Pode ver o tempo de execução da tarefa vendo os detalhes da tarefa.
  3. Verifique se existem problemas com os métodos que está a usar para ver as métricas fazendo o seguinte:
    1. A menos que queira ver métricas apenas para recursos em execução, certifique-se de que está a ver métricas através do Explorador de métricas ou de um painel de controlo personalizado criado a partir de gráficos do Explorador de métricas. Outros métodos, como os painéis de controlo do Compute Engine, não apresentam métricas para recursos que foram eliminados.
    2. Certifique-se de que o período de apresentação inclui o tempo de execução da tarefa. Para os gráficos, certifique-se também de que a resolução do gráfico é adequada para os seus dados.
    3. Certifique-se de que não tem filtros que estejam a ocultar os dados.
  4. Se o problema persistir, consulte as páginas de Resolução de problemas do Cloud Monitoring na documentação do Google Cloud Observability.

Restrição violada para endereços IP externos de VMs

Problema

O seguinte problema é apresentado no campo statusEvents para uma tarefa 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.

Este problema ocorre porque o seu projeto, pasta ou organização definiu a compute.vmExternalIpAccess restrição da política da organização para que apenas as VMs na lista de autorizações possam usar endereços IP externos.

Solução

Para resolver o problema, recrie a tarefa e faça uma das seguintes ações:

Restrição violada para imagens seguras

Problema

O seguinte problema é apresentado no campo statusEvents para uma tarefa 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

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

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

A tarefa falhou ao usar um modelo de instância

Problema

O seguinte problema é apresentado no campo statusEvents para uma tarefa com falhas que usa um modelo de instância:

INVALID_FIELD_VALUE,BACKEND_ERROR

Este problema ocorre devido a problemas pouco claros com o modelo de instância da tarefa.

Solução

Para depurar o problema mais detalhadamente, faça o seguinte:

  1. Crie um MIG com 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á a criar o MIG na Google Cloud consola.

    Aceda a Operações do Compute Engine

Códigos de saída de falha de tarefas

Quando uma tarefa específica num trabalho falha, a tarefa devolve um código de saída diferente de zero. Consoante a forma como configura o campo ignoreExitStatus, uma tarefa com falha pode ou não fazer com que uma tarefa falhe.

Além dos códigos de saída que definir num executável, um lote tem vários códigos de saída reservados, incluindo os seguintes códigos de saída.

Preempção de VM (50001)

Problema

O seguinte problema aparece no campo statusEvents para uma tarefa:

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

Este problema ocorre quando uma VM do Spot para a tarefa é anulada durante o tempo de execução.

Solução

Para resolver o problema, faça uma das seguintes ações:

  • Tente novamente a tarefa usando novas tentativas de tarefas automáticas ou executando novamente a tarefa manualmente.
  • Para garantir que não existe preempção, use VMs com o modelo de aprovisionamento padrão.

Tempo limite de relatórios da VM (50002)

Problema

O seguinte problema aparece no campo statusEvents para uma tarefa:

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.

Este problema ocorre quando existe um limite de tempo no back-end que faz com que o Batch deixe de receber atualizações de uma VM para a tarefa. Infelizmente, muitas falhas de hardware ou software podem fazer com que uma VM não responda. Por exemplo, uma VM pode falhar devido a um evento de anfitrião temporário ou a recursos insuficientes.

Solução

Para resolver este problema, faça o seguinte:

  1. Caso o problema seja temporário e se resolva sozinho, tente novamente a tarefa através de novas tentativas de tarefas automatizadas ou executando novamente a tarefa manualmente.
  2. Se o problema persistir, identifique e resolva o que está a fazer com que a VM não responda através de uma ou mais das seguintes ações:

    • Recomendado: receba apoio técnico através do Google Cloud apoio técnico ou da etiqueta de lote nos fóruns do Google Cloud.

    • Tente identificar e resolver o problema sozinho. Por exemplo, se tiver experiência com o Compute Engine, pode tentar resolver os problemas das VMs da tarefa fazendo o seguinte:

      1. Para identificar os nomes das VMs da sua tarefa, faça o seguinte:

        1. Veja os registos da tarefa.
        2. Filtrar registos para entradas que contenham a expressão report agent state:.
        3. Reveja os registos para determinar a VM para cada tentativa de cada tarefa. Cada registo é semelhante ao seguinte, no qual existe uma expressão instance: e uma ou mais expressões task_id:.

          report agent state: ... instance:"INSTANCE_NAME" ... task_id:"task/JOB_UID-group0-TASK_INDEX/TASK_RETRIES/0 ..."
          

          Este registo inclui os seguintes valores:

          • INSTANCE_NAME: o nome da VM.
          • JOB_UID: o ID exclusivo (UID) da tarefa.
          • TASK_INDEX: o índice da tarefa.
          • TASK_RETRIES: a tentativa da tarefa que foi executada nesta VM, formatada como o número de novas tentativas. Por exemplo, este valor é 0 para a primeira tentativa de uma tarefa. Cada tarefa só é tentada uma vez, a menos que ative as novas tentativas de tarefas automáticas.
      2. Resolva problemas das VMs do seu trabalho através da documentação do Compute Engine. Por exemplo, consulte os artigos Resolução de problemas de encerramentos e reinícios de VMs e Resolução de problemas de arranque de VMs.

VM reiniciada durante a execução (50003)

Problema

O seguinte problema aparece no campo statusEvents para uma tarefa:

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.

Este problema ocorre quando uma VM para uma tarefa é reiniciada inesperadamente durante o tempo de execução.

Solução

Para resolver este problema, tente novamente a tarefa através de novas tentativas de tarefas automáticas ou executando novamente a tarefa manualmente.

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

Problema

O seguinte problema aparece no campo statusEvents para uma tarefa:

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.

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

Solução

Para resolver este problema, tente novamente a tarefa através de novas tentativas de tarefas automáticas ou executando novamente a tarefa manualmente.

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

Problema

O seguinte problema aparece no campo statusEvents para uma tarefa:

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.

Este 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 runnable excede o limite de tempo especificado no campo timeout

Para identificar especificamente que limite de tempo foi excedido, veja os registos da tarefa e encontre um registo que mencione o código de saída 50005. Este campo textPayload deste registo indica onde e quando o limite de tempo foi excedido.

Solução

Para resolver o problema, tente validar o tempo de execução total necessário pela tarefa ou pelo executável que excedeu o limite de tempo. Em seguida, efetue um destes procedimentos:

  • Se espera este erro apenas ocasionalmente, como para uma tarefa ou um executável com um tempo de execução inconsistente, pode tentar recriar a tarefa e configurá-la para automatizar as novas tentativas de tarefas para tentar aumentar a taxa de êxito.

  • Caso contrário, se a tarefa ou o executável precisar de forma consistente e intencional de mais tempo para terminar a execução do que o limite de tempo atual permite, defina um limite de tempo mais longo.

VM recriada durante a execução (50006)

Problema

O seguinte problema aparece no campo statusEvents para uma tarefa:

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.

Este problema ocorre quando uma VM para uma tarefa é recriada inesperadamente durante o tempo de execução.

Solução

Para resolver este problema, tente novamente a tarefa através de novas tentativas de tarefas automáticas ou executando novamente a tarefa manualmente.

O que se segue?