Nesta página, mostramos como resolver problemas com o Batch.
Se você estiver tentando resolver problemas de um job para o qual não tem uma mensagem de erro, verifique se o histórico do job contém mensagens de erro conferindo os eventos de status antes de analisar este documento.
Para mais informações sobre a solução de 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 devido a um dos erros nesta seção.
Cota insuficiente
Problema
Um dos seguintes problemas ocorre quando você tenta criar um job:
Quando o job está no estado
QUEUED
, o seguinte problema aparece no campostatusEvents
: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 cotaQUOTA_NAME
impediram o uso solicitado do job (WANT_QUOTA
).Quando o job está nos estados
QUEUED
,SCHEDULED
ouFAILED
, um dos seguintes problemas aparece no campostatusEvents
: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 a cota
QUOTA_NAME
, que tem um limite deQUOTA_LIMIT
no local especificado.
Solução
Para resolver o problema, faça o seguinte:
Se o job foi atrasado, tente esperar até que mais cota seja liberada.
Se o job falhar devido à cota insuficiente ou se esses atrasos persistirem, tente evitar a cota insuficiente fazendo uma das seguintes ações:
Crie trabalhos que usem menos dessa cota ou uma cota diferente. Por exemplo, especifique um local ou tipo de recurso diferente permitido para o job ou divida o uso da cota em outros projetos.
Solicite um limite de cota maior para seu projeto em Google Cloud.
Para mais informações, consulte Cotas e limites de lote e Como trabalhar com cotas.
Permissões insuficientes para atuar como a conta de serviço
Problema
O seguinte problema ocorre quando você tenta criar um job:
Se o job não usar um modelo de instância, o problema vai aparecer da seguinte forma:
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 vai aparecer 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
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:
- Se o job 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 do job.
- Verifique se o usuário que está criando o job recebeu o
papel de 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 o acesso. - Recrie o job.
Redes repetidas
Problema
O seguinte problema ocorre quando você tenta criar um job:
Networks must be distinct for NICs in the same InstanceTemplate
Esse problema ocorre porque você especificou a rede para um job mais de uma vez.
Solução
Para resolver o problema, recrie o job e especifique a rede usando uma das seguintes opções:
- Modelo de instância de VM:se você quiser usar um modelo de instância de VM ao criar esse job, especifique a rede no modelo de instância de VM.
- Campos
network
esubnetwork
:esses campos podem ser usados no corpo da solicitação ao criar um job usando a API Batch ou no arquivo de configuração JSON ao criar um job usando a CLI gcloud. - Flags
--network
e--subnetwork
:essas flags podem ser usadas com o comandogcloud batch jobs submit
ao criar um job usando a CLI gcloud.
Para mais informações, consulte Especificar a rede de um job.
Rede inválida para o VPC Service Controls
Problema
O seguinte problema ocorre quando você tenta criar um job:
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 externos em um perímetro de serviço do VPC Service Controls.
Para resolver o problema, crie um job que bloqueie o acesso externo a 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 o VPC Service Controls com o Batch.
Problemas de jobs e erros de falha
Se você tiver problemas com um job que não está sendo executado corretamente ou que falhou por motivos não claros, isso pode ser devido a um dos erros desta seção ou a um dos códigos de saída na seção Códigos de saída de falha da tarefa.
Nenhum registro no Cloud Logging
Problema
Você precisa depurar um job, mas nenhum registro aparece para ele no Cloud Logging.
Esse problema geralmente ocorre pelos seguintes motivos:
- A API Cloud Logging não está ativada no seu projeto. Mesmo que você configure corretamente todos os outros itens para os registros de um job, ele não vai produzir registros se o serviço não estiver ativado para seu projeto.
- A conta de serviço do job não tem permissão para gravar logs. 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 todas as informações que você quer que apareçam nos registros na saída padrão (stdout) e no fluxo 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 aos recursos e comecem a ser executadas.
- O Cloud Logging foi configurado para excluir automaticamente os registros do job. Os registros de jobs em lote não vão aparecer se você tiver configurado filtros de exclusão para o Cloud Logging que fazem com que os registros de jobs em lote sejam excluídos.
Solução
Para resolver esse problema, faça o seguinte:
- Verifique se os registros não foram excluídos automaticamente do Cloud Logging desativando todos os filtros de exclusão atuais do Cloud Logging.
- Verifique se a API Cloud Logging está ativada no seu projeto.
- 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 lote para um projeto. - Acesse os detalhes do job usando a CLI gcloud ou a API Batch.
Os detalhes do job podem ajudar a entender por que ele não
produziu registros e podem fornecer informações que você esperava
receber dos registros. Por exemplo, faça o seguinte:
- Para verificar se a geração de registros está ativada, analise o campo
logsPolicy
do job. - Para verificar se o job foi concluído, revise o campo
status
dele.
- Para verificar se a geração de registros está ativada, analise o campo
Depois de fazer as mudanças, recrie o job e aguarde a execução dele terminar antes de verificar os registros.
Nenhum relatório do agente de serviço
Problema
O problema a seguir aparece no
campo statusEvents
para um job que não está sendo executado corretamente ou falhou antes que as VMs fossem criadas:
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á informando ao agente de serviço de lote.
Esse problema geralmente ocorre pelos seguintes motivos:
- As VMs do job não têm permissões suficientes.
As VMs de um job precisam de permissões específicas para informar o estado ao
agente de serviço de lote. Para fornecer essas permissões
a VMs de um job, conceda o
papel de Repórter do agente de lote (
roles/batch.agentReporter
) à conta de serviço do job. - As VMs do job têm problemas de rede. As VMs de um job precisam de acesso à rede para se comunicar com o agente de serviço do lote.
- As VMs do job estão usando uma imagem do SO da VM do Batch desatualizada ou uma imagem do SO da VM com um software de 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 para o agente de serviço de lote.
Solução
Para resolver o problema, faça o seguinte:
Verifique se as VMs do job têm as permissões necessárias para informar o estado ao agente de serviço do lote.
- Para identificar a conta de serviço do job, confira os detalhes do job usando a CLI gcloud ou a API Batch. Se nenhuma conta de serviço estiver listada, o job vai usar a conta de serviço padrão do Compute Engine.
Confirme se a conta de serviço do job tem permissões para o papel de Batch Agent Reporter (
roles/batch.agentReporter
). Para mais informações, consulte Gerenciar acesso e Restringir o uso da conta de serviço.Por exemplo, para conceder à conta de serviço padrão do Compute Engine as permissõ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
- Substitua PROJECT_NUMBER pelo número do projeto.
- Substitua PROJECT_ID pelo ID do projeto.
Verifique se as VMs do job têm acesso de rede adequado. Para mais informações, consulte Visão geral da rede de lote e Resolver problemas de rede comuns.
Se você especificou a imagem do SO da VM para o job, verifique se a imagem do SO da VM tem suporte no momento.
Se você tiver ativado o Cloud Logging para o job, poderá identificar esse problema verificando qualquer um dos seguintes registros de agente (
batch_agent_logs
). Para mais informações, consulte Analisar um job usando registros.Registro de erro de software desatualizado do agente de serviço do Batch:
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 do 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
.
Use uma imagem do SO da VM mais recente para resolver esse problema. Se o job usar uma imagem personalizada, recrie-a com base na versão mais recente de uma imagem pública com suporte.
Para mais informações, consulte Imagens do SO de VM com suporte e Visualizar imagens do SO de VM.
Recrie o job.
Métricas de recursos ausentes no Cloud Monitoring
Problema
Você quer ver as 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 para o projeto. Mesmo que você configure corretamente tudo no seu projeto, as métricas de recursos podem não aparecer até que a API Cloud Monitoring seja ativada. Para o Ops Agent, também é necessário ativar a API Cloud Logging.
- Você não tem permissões suficientes para acessar 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 do job esteja em execução.
- A configuração ou as permissões do job não são 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, instalar o agente e usar uma conta de serviço que possa gravar métricas no monitoramento.
- Você precisa usar um método ou filtro diferente para conferir as métricas. Alguns métodos para visualizar métricas não mostram métricas de VMs depois que elas são excluídas. Além disso, as métricas não vão aparecer se forem omitidas por filtros ou pelo período exibido. 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 muito finas para serem exibidas.
- As métricas foram excluídas. Não é possível visualizar métricas depois que elas são excluídas, o que acontece automaticamente após os períodos de retenção do monitoramento.
Solução
Se apenas as métricas do Ops Agent estiverem ausentes, tente resolver o problema fazendo o seguinte:
- Para verificar a configuração do job, faça o seguinte:
- Para conferir as informações completas de configuração do job, confira os detalhes dele usando a CLI gcloud ou a API Batch. Use a saída para as etapas restantes.
- Verifique se a conta de serviço do job tem as permissões para gravar métricas do Ops Agent.
- Verifique se o job atende a todos os requisitos do agente de operações.
- Verifique se o job instala o Agente de operações corretamente. Embora seja
possível instalar o Agente de operações manualmente em um executável, o
método recomendado é instalar o Agente de operações automaticamente definindo o
campo
installOpsAgent
comotrue
.
- Se o problema persistir, consulte Resolver problemas do Ops Agent na documentação de Observabilidade do Google Cloud.
Caso contrário, resolva o problema da seguinte forma:
- Verifique se a API Monitoring está ativada no seu projeto:
- Verifique se as VMs do job começaram a ser executadas e se o tempo de execução ainda está dentro dos períodos de retenção de monitoramento. Para conferir o tempo de execução do job, acesse os detalhes dele.
- Para verificar se não há problemas com os métodos que você está usando para visualizar as métricas, faça o seguinte:
- A menos que você queira ver as métricas apenas para recursos em execução, verifique se você está visualizando as métricas usando o Metrics Explorer ou um painel personalizado criado com os gráficos do Metrics Explorer. Outros métodos, como os painéis do Compute Engine, não mostram métricas de recursos excluídos.
- Verifique se o período de exibição inclui o tempo de execução do job. Para gráficos, verifique também se a resolução do gráfico é adequada para seus dados.
- Verifique se não há filtros que estejam ocultando os dados.
- Se o problema persistir, consulte as páginas Solução de problemas do Cloud Monitoring na documentação da Observability do Google Cloud.
Restrição violada para endereços IP externos 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 o projeto, a pasta ou a organização definiu a
restrição de política organizacional compute.vmExternalIpAccess
para que apenas as VMs da lista de permissões possam usar endereços IP externos.
Solução
Para resolver o problema, recrie o job e faça uma das seguintes ações:
- Use um projeto que esteja isento da restrição.
- Crie um job que bloqueie o acesso externo a todas as VMs.
Violação de restrição 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 o projeto definiu a
restrição de política de imagens confiáveis (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:
- Recrie o job para especificar uma imagem do SO da VM que já é permitida pela restrição da política de imagens confiáveis.
- Peça ao administrador para permitir a modificação da
restrição da política de imagem confiável para permitir imagens do SO da VM do
projeto de imagens
batch-custom-image
. Para instruções, consulte Controlar o acesso a imagens do SO da VM para o Batch.
O job falhou 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
Esse problema ocorre devido a problemas não claros com o modelo de instância do job.
Solução
Para depurar o problema, faça o seguinte:
- Crie um MIG usando o modelo de instância e observe se ocorrem erros com mais detalhes.
Opcional: para tentar encontrar mais informações, consulte a operação de execução longa que está criando o MIG no console do Google Cloud.
Códigos de saída de falha de tarefas
Quando uma tarefa específica em um job falha, ela retorna um código de saída diferente de zero.
Dependendo de como você configura 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 definidos em um executável, um lote tem vários códigos de saída reservados, incluindo os seguintes.
Preempção de VM (50001)
Problema
O seguinte problema aparece no
campo statusEvents
de um job:
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 do Spot para o job é interrompida durante a execução.
Solução
Para resolver o problema, faça uma das seguintes ações:
- Tente novamente usando tentativas automatizadas ou execute o job manualmente.
- Para garantir que não haja preempção, use VMs com o modelo de provisionamento padrão.
Tempo limite de relatório da VM (50002)
Problema
O seguinte problema aparece no
campo statusEvents
de um job:
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 faz com que o lote não receba mais atualizações de uma VM para o job. 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 temporário do host ou recursos insuficientes.
Solução
Para resolver esse problema, faça o seguinte:
- Se o problema for temporário e se resolver sozinho, tente novamente a tarefa usando tentativas automáticas de tarefas ou executando o job manualmente.
Se o problema persistir, identifique e resolva o que está causando a VM a não responder fazendo uma ou mais das seguintes ações:
Recomendado:receba suporte pelo Google Cloud Suporte ou pelo rótulo de lote nos Fóruns do Cloud.
Tente identificar e resolver o problema por conta própria. Por exemplo, se você conhece o Compute Engine, tente resolver os problemas das VMs do job:
Para identificar os nomes das VMs do job, faça o seguinte:
- Acessar os registros do job.
- Filtrar registros para
entradas que contêm a frase
report agent state:
. Revise os registros para determinar a VM para cada tentativa de cada tarefa. Cada registro é semelhante ao seguinte, em que há uma frase
instance:
e uma ou mais frasestask_id:
.report agent state: ... instance:"INSTANCE_NAME" ... task_id:"task/JOB_UID-group0-TASK_INDEX/TASK_RETRIES/0 ..."
Este registro inclui os seguintes valores:
INSTANCE_NAME
: o nome da VM.JOB_UID
: o ID exclusivo (UID) do job.TASK_INDEX
: o índice da tarefa.TASK_RETRIES
: a tentativa da tarefa executada nessa VM, formatada como o número de novas tentativas. Por exemplo, esse valor é0
para a primeira tentativa de uma tarefa. Cada tarefa é tentada apenas uma vez, a menos que você ative as tentativas automatizadas de tarefas.
Resolva problemas nas VMs do job usando a documentação do Compute Engine. Por exemplo, consulte Solução de problemas de desligamentos e reinicializações de VMs e Solução de problemas de inicialização de VMs.
A VM foi reinicializada durante a execução (50003).
Problema
O seguinte problema aparece no
campo statusEvents
de um job:
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 uma VM de um job é reiniciada inesperadamente durante a execução.
Solução
Para resolver esse problema, tente novamente usando tentativas automatizadas ou execute o job manualmente.
A VM e a tarefa não respondem (50004)
Problema
O seguinte problema aparece no
campo statusEvents
de um job:
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 novamente usando tentativas automatizadas ou execute o job manualmente.
A tarefa é executada no tempo de execução máximo (50005)
Problema
O seguinte problema aparece no
campo statusEvents
de um job:
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 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,
confira os registros do job
e encontre um registro que mencione o código de saída 50005
. Esse campo textPayload
do registro indica onde e quando o limite de tempo foi excedido.
Solução
Para resolver o problema, tente verificar o tempo de execução total necessário para a tarefa ou o executável que excedeu o limite de tempo. Em seguida, execute um destes procedimentos:
Se você espera esse erro apenas ocasionalmente, como para uma tarefa ou um executável com um tempo de execução inconsistente, tente recriar o job e configurá-lo para automatizar as novas tentativas de tarefa para tentar aumentar a taxa de sucesso.
Caso contrário, se a tarefa ou o executável precisar de mais tempo para ser concluída do que o tempo limite atual permite, defina um tempo limite maior.
VM recriada durante a execução (50006)
Problema
O seguinte problema aparece no
campo statusEvents
de um job:
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 uma VM de um job é recriada inesperadamente durante a execução.
Solução
Para resolver esse problema, tente novamente usando tentativas automatizadas ou execute o job manualmente.