Esta página mostra como resolver problemas com o Batch.
Se você estiver tentando resolver um problema de um job uma mensagem de erro para, verifique se o histórico da tarefa contém mensagens de erro ao visualizar 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 um job:
Quando o job está no estado
QUEUED
, o problema a seguir aparece 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 limite (QUOTA_LIMIT
) da cota deQUOTA_NAME
impediram que o job o uso solicitado (WANT_QUOTA
).Quando o job está em 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 sua cota de
QUOTA_NAME
, que tem um limite deQUOTA_LIMIT
nos em um local específico.
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:
Criar jobs que usem menos dessa cota ou uma cota diferente. Por exemplo, especifique um local ou tipo de recurso permitido diferente para job ou dividir o uso da cota entre outros projetos.
Solicite um limite de cota maior para seu projeto do 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 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 a tarefa 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 especificado no modelo de instância corresponde à conta de serviço especificado 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 trabalho 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 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 com 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 para 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.
Erros e problemas de jobs
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 para 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 gerar registros sem permissões suficientes.
- O job não foi configurado para produzir registros. Para gerar registros Cloud Logging, o job precisa ter o Cloud Logging ativado. O tipo de executáveis também devem ser configurados para gravar as informações que você deseja aparecem nos registros para a saída padrão (stdout) em fluxos 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 aos recursos atribuídos e começar a executar.
- 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 qualquer filtros de exclusão para o 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 Batch 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, revise o job
campo
logsPolicy
. - Para verificar se o job foi concluído, analise o campo
status
dele.
- Para verificar se a geração de registros está ativada, revise o job
campo
Depois de fazer as mudanças, recrie o job e aguarde a execução dele terminar antes de verificar os registros.
Nenhum agente de serviço está gerando relatórios
Problema
O problema a seguir aparece
Campo statusEvents
para 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á 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 exigem permissões específicas para informar o estado ao
Agente de serviço em lote. Você pode fornecer essas permissões
das VMs de um job concedendo o
Papel de informante de agente em 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 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 em lote ou uma imagem do SO da VM com um 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 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, ver 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[email protected]
- 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 em lote e Solucionar problemas comuns de rede.
Se você especificou a imagem do SO da VM para o job, verifique se o No momento, há suporte para a imagem do SO da VM.
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 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 um Imagem do SO da VM do Batch que o job usa, por exemplo,
batch-debian-11-20220909-00-p00
.
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 da versão mais recente de uma imagem pública compatível.
Para mais informações, consulte Imagens de SO de VM compatíveis. e Visualizar imagens do SO da VM.
Recrie o job.
Métricas de recursos ausentes no Cloud Monitoring
Problema
Você quer visualizar métricas de recursos para 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 seu projeto. Mesmo que você configure corretamente todo o restante do projeto, os recursos as métricas podem não aparecer até que a API Cloud Monitoring seja ativada. Para o agente de operações, também é necessário ativar a API Cloud Logging.
- Você não tem permissões suficientes para acessar as métricas. Você não pode 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 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, 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 serão exibidas se forem omitidas pelos filtros ou o período exibido. Além disso, os gráficos de métricas têm controles e resoluções 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, ver os detalhes do job usando a CLI gcloud ou a API Batch. Use a saída para as etapas restantes.
- Confira se a conta de serviço do job tem o permissões para gravar métricas do agente de operações.
- Verifique se o job atende a todos os requisitos do agente de operações.
- Verifique se o job instala corretamente o Agente de operações. Embora seja
instalar o Agente de operações manualmente em um arquivo executável,
método recomendado é instalar automaticamente o Agente de operações
definindo
Campo
installOpsAgent
paratrue
.
- 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:
- Verifique se a API Monitoring está ativada no seu projeto:
- Verifique se as VMs do job começaram a ser executadas e se o ambiente de execução ainda é no Como monitorar períodos de armazenamento: Para conferir o ambiente de execução do job, visualização dos detalhes do job.
- Verifique se não há problemas com os métodos usados para visualizar
fazendo o seguinte:
- A menos que você queira ver métricas somente para recursos em execução, verifique se se você visualizar métricas usando o Metrics Explorer ou um 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.
- Assegure-se de que 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.
- Verifique se não há nenhum filtros que estão escondendo 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 na lista de permissões possam usar endereços IP externos.
Solução
Para resolver o problema, recrie o job e realize uma das seguintes ações:
Violação de restrição para imagens confiáveis
Problema
O problema a seguir aparece
Campo statusEvents
para 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 o
Restrição de política de imagens confiáveis (compute.trustedImageProjects
)
de modo que as imagens do Batch, que estão na
batch-custom-image
projeto de imagens não são permitidos.
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 às imagens do SO da VM para o Batch.
Falha no job ao usar um modelo de instância
Problema
O problema a seguir aparece
Campo statusEvents
para 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 tarefa
Quando uma tarefa específica em um job falha, ela retorna um valor diferente de zero.
código de saída.
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 O Batch tem vários códigos de saída reservados, incluindo o seguintes códigos de saída.
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 spot do job interrompido durante a execução.
Solução
Para resolver o problema, siga um destes procedimentos:
- Tente executar a tarefa novamente usando novas tentativas automatizadas de tarefas ou executar o job novamente de forma manual.
- Para garantir que não haja preempção, use VMs com o modelo de provisionamento padrão.
Tempo limite de relatórios da VM (50002)
Problema
O problema a seguir aparece
Campo statusEvents
para 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 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 responde. Por exemplo, uma VM pode falhar devido a um erro de host temporário evento 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 automatizadas ou executando o job manualmente.
Se o problema persistir, identifique e resolva o que está fazendo a VM estar não responde. Para isso, realize uma ou mais das seguintes ações:
Recomendado:receba suporte por o Suporte do Google Cloud ou Rótulo do lote nos fóruns do Cloud.
Tente identificar e resolver o problema por conta própria. Por exemplo, se você estiver familiarizado com o Compute Engine, tente solucionar os problemas para cada VM do job fazendo o seguinte:
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:
. Analise os registros para determinar a VM para cada tentativa de para cada tarefa. Cada registro é semelhante ao seguinte, no qual 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, na sigla em inglês) 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.
Resolver problemas nas VMs do job usando o Compute Engine na documentação do Google Cloud. Por exemplo, consulte Solução de problemas de desligamentos e reinicializações da VM e Solução de problemas de inicialização da VM.
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 realizar a tarefa novamente usando novas tentativas automatizadas de tarefas ou executar o job novamente de forma manual.
A VM e a tarefa não respondem (50004)
Problema
O problema a seguir aparece
Campo statusEvents
para 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 executar o job novamente de forma manual.
A tarefa é executada acima do tempo de execução máximo (50005)
Problema
O problema a seguir aparece
Campo statusEvents
para 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,
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, verifique o tempo total de execução exigido pelo 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 executável precisar de maneira consistente e intencional mais tempo para terminar a corrida do que o tempo limite atual permite, definir 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.