Questa pagina mostra come risolvere i problemi relativi a Batch.
Se stai cercando di risolvere i problemi relativi a un job per cui non hai un messaggio di errore, controlla se la cronologia del job contiene messaggi di errore visualizzando gli eventi di stato prima di esaminare questo documento.
Per ulteriori informazioni sulla risoluzione dei problemi relativi a un job, consulta anche i seguenti documenti:
Errori di creazione dei job
Se non riesci a creare un job, il motivo potrebbe essere attribuito a uno degli errori riportati in questa sezione.
Quota insufficiente
Problema
Quando provi a creare un job, si verifica uno dei seguenti problemi:
Quando il job è nello stato
QUEUED
, nel campostatusEvents
viene visualizzato il seguente problema: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.].
Questo problema indica che il job è stato ritardato perché l'utilizzo attuale (
QUOTA_USAGE
) e il limite (QUOTA_LIMIT
) della quotaQUOTA_NAME
hanno impedito l'utilizzo richiesto (WANT_QUOTA
) del job.Quando il job si trova negli stati
QUEUED
,SCHEDULED
oFAILED
, nel campostatusEvents
viene visualizzato uno dei seguenti problemi: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
Questo problema indica che la creazione di una risorsa non è riuscita perché la richiesta ha superato la quota
QUOTA_NAME
, che ha un limite diQUOTA_LIMIT
nella posizione specificata.
Soluzione
Per risolvere il problema:
Se il job è stato ritardato, prova ad attendere il rilascio di ulteriore quota.
Se il job non è riuscito a causa di una quota insufficiente o se questi ritardi persistono, prova a evitare una quota insufficiente eseguendo una delle seguenti operazioni:
Crea job che utilizzano una quota inferiore o una quota diversa. Ad esempio, specifica una località o un tipo di risorsa consentito diverso per il job oppure dividi l'utilizzo della quota in più progetti.
Richiedi un limite di quota più elevato per il tuo progetto da Google Cloud.
Per saperne di più, consulta Quote e limiti batch e Utilizzo delle quote.
Autorizzazioni insufficienti per fungere da account di servizio
Problema
Quando provi a creare un job, si verifica il seguente problema:
Se il job non utilizza un modello di istanza, il problema viene visualizzato come segue:
caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
Se il job utilizza un modello di istanza, il problema viene visualizzato come segue:
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
Questo problema si verifica in genere perché l'utente che crea il job non dispone
di autorizzazioni sufficienti per agire come account di servizio utilizzato dal job,
che è controllato dall'autorizzazione
iam.serviceAccounts.actAs
.
Soluzione
Per risolvere il problema:
- Se il job utilizza un modello di istanza, verifica che il account di servizio specificato nel modello di istanza corrisponda alaccount di serviziot specificato nella definizione del job.
- Assicurati che all'utente che crea il job sia stato concesso il ruolo
Utente service account (
roles/iam.serviceAccountUser
) nel account di servizio specificato per il job. Per saperne di più, vedi Gestire l'accesso. - Ricrea il job.
Reti ripetute
Problema
Quando provi a creare un job, si verifica il seguente problema:
Networks must be distinct for NICs in the same InstanceTemplate
Questo problema si verifica perché hai specificato la rete per un job più di una volta.
Soluzione
Per risolvere il problema, ricrea il job e specifica la rete utilizzando una delle seguenti opzioni:
- Modello di istanza VM:se vuoi utilizzare un modello di istanza VM durante la creazione di questo job, devi specificare la rete nel modello di istanza VM.
- Campi
network
esubnetwork
: Questi campi possono essere utilizzati nel corpo della richiesta quando crei un job utilizzando l'API Batch o nel file di configurazione JSON quando crei un job utilizzando gcloud CLI. - Flag
--network
e--subnetwork
: Questi flag possono essere utilizzati con il comandogcloud batch jobs submit
quando crei un job utilizzando gcloud CLI.
Per saperne di più, consulta la sezione Specificare la rete per un job.
Rete non valida per i Controlli di servizio VPC
Problema
Quando provi a creare un job, si verifica il seguente problema:
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
Soluzione
Questo problema si verifica perché stai tentando di creare ed eseguire un job con VM che hanno indirizzi IP esterni in un perimetro di servizio Controlli di servizio VPC.
Per risolvere il problema, crea un job che blocca l'accesso esterno per tutte le VM.
Per saperne di più su come configurare la rete per un job in un perimetro di servizio Controlli di servizio VPC, consulta Utilizzare i Controlli di servizio VPC con Batch.
Problemi relativi ai job ed errori di errore
Se riscontri problemi con un job che non viene eseguito correttamente o non è andato a buon fine per motivi poco chiari, il problema potrebbe essere dovuto a uno degli errori descritti in questa sezione o a uno dei codici di uscita nella sezione Codici di uscita per errori delle attività.
Nessun log in Cloud Logging
Problema
Devi eseguire il debug di un job, ma non vengono visualizzati log per il job in Cloud Logging.
Questo problema si verifica spesso per i seguenti motivi:
- L'API Cloud Logging non è abilitata per il tuo progetto. Anche se configuri correttamente tutto il resto per i log di un job, non verranno generati log se il servizio non è abilitato per il tuo progetto.
- Il account di servizio del job non dispone dell'autorizzazione di scrittura dei log. Un job non può produrre log senza autorizzazioni sufficienti.
- Il job non è stato configurato per generare log. Per generare log in Cloud Logging, un job deve avere Cloud Logging abilitato. I runnable del job devono anche essere configurati per scrivere qualsiasi informazione che vuoi visualizzare nei log nei flussi di output standard (stdout) e di errore standard (stderr). Per saperne di più, consulta Analizzare un job utilizzando i log.
- Le attività non sono state eseguite. I log possono essere generati solo dopo che alle attività sono state assegnate risorse e sono state avviate.
- Cloud Logging è stato configurato per escludere automaticamente i log del job. I log dei job batch non possono essere visualizzati se hai configurato filtri di esclusione per Cloud Logging che causano l'esclusione dei log dei job batch.
Soluzione
Per risolvere il problema:
- Assicurati che i log non siano stati esclusi automaticamente da Cloud Logging disattivando eventuali filtri di esclusione per Cloud Logging.
- Assicurati che l'API Cloud Logging sia abilitata per il tuo progetto.
- Assicurati che l'account di servizio per il job disponga del ruolo IAM
Writer log (
roles/logging.logWriter
). Per ulteriori informazioni, vedi Attivare Batch per un progetto. - Visualizza i dettagli del job utilizzando gcloud CLI o l'API Batch.
I dettagli del job possono aiutarti a capire perché il job non ha
prodotto log e potrebbero fornire le informazioni che speravi di ottenere
dai log. Ad esempio, esegui le seguenti operazioni:
- Per verificare che la registrazione sia abilitata, esamina il campo
logsPolicy
del job. - Per verificare che il job sia stato eseguito correttamente, esamina il
campo
status
del job.
- Per verificare che la registrazione sia abilitata, esamina il campo
Dopo aver apportato le modifiche, ricrea il job e attendi il completamento dell'esecuzione prima di controllare i log.
Nessun report dell'agente di servizio
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un job che non viene eseguito correttamente o non è riuscito prima della creazione delle VM:
No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start
Il problema indica che nessuna delle VM di un job comunica con l'agente di servizio Batch.
Questo problema si verifica spesso per i seguenti motivi:
- Le VM del job non dispongono di autorizzazioni sufficienti.
Le VM di un job richiedono autorizzazioni specifiche per segnalare il proprio stato all'agente di servizio Batch. Puoi fornire queste autorizzazioni
per le VM di un job concedendo il ruolo
Reporter agente Batch (
roles/batch.agentReporter
) all'account di servizio del job. - Le VM del job presentano problemi di rete. Le VM di un job richiedono l'accesso alla rete per comunicare con l'agente del servizio Batch.
- Le VM del job utilizzano un'immagine del sistema operativo VM Batch obsoleta o un'immagine del sistema operativo VM con un software dell'agente di servizio Batch obsoleto. Le VM del job richiedono un software nell'immagine del sistema operativo VM che fornisca le dipendenze attuali per la generazione di report all'agente del servizio Batch.
Soluzione
Per risolvere il problema:
Verifica che le VM del job dispongano delle autorizzazioni necessarie per segnalare il proprio stato all'agente di servizio Batch.
- Per identificare il account di servizio del job, visualizza i dettagli del job utilizzando gcloud CLI o l'API Batch. Se non è elencato alcun account di servizio, il job utilizza per impostazione predefinita il account di servizio predefinito di Compute Engine.
Verifica che il account di servizio del job disponga delle autorizzazioni per il ruolo reporter agente batch (
roles/batch.agentReporter
). Per ulteriori informazioni, consulta Gestire l'accesso e Limitare l'account di servizio account.Ad esempio, per concedere all'account di servizio predefinito di Compute Engine le autorizzazioni richieste, utilizza il seguente comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/batch.agentReporter \ --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Sostituisci PROJECT_NUMBER con il tuo numero di progetto.
- Sostituisci PROJECT_ID con il tuo ID progetto.
Verifica che le VM del job abbiano un accesso di rete adeguato. Per ulteriori informazioni, consulta Panoramica del networking batch e Risolvere i problemi di networking comuni.
Se hai specificato l'immagine del sistema operativo VM per il job, verifica che l'immagine del sistema operativo VM sia attualmente supportata.
Se hai attivato Cloud Logging per il job, puoi identificare questo problema controllando uno dei seguenti log dell'agente (
batch_agent_logs
). Per ulteriori informazioni, consulta Analizzare un job utilizzando i log.Log per l'errore del software dell'agente di servizio Batch obsoleto:
rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
BATCH_AGENT_VERSION è la versione del software per comunicare con l'agente di servizio Batch utilizzato dal job, ad esempio
cloud-batch-agent_20221103.00_p00
.Log per l'errore relativo all'immagine del sistema operativo VM Batch obsoleta:
rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
BATCH_VM_OS_IMAGE_NAME è la versione specifica di un'immagine sistema operativo VM di Batch utilizzata dal job, ad esempio
batch-debian-11-20220909-00-p00
.
Puoi risolvere questo problema utilizzando un'immagine del sistema operativo VM più recente. Se il job utilizza un'immagine personalizzata, ricreala in base a una delle versioni più recenti di un'immagine pubblica supportata.
Per ulteriori informazioni, consulta Immagini del sistema operativo VM supportate e Visualizzare le immagini del sistema operativo VM.
Ricrea il job.
Metriche delle risorse mancanti in Cloud Monitoring
Problema
Vuoi visualizzare le metriche delle risorse per un job, ma alcune o tutte le metriche previste non sono presenti.
Questo problema si verifica spesso per i seguenti motivi:
- L'API non è stata abilitata per il tuo progetto. Anche se configuri correttamente tutto il resto nel tuo progetto, le metriche delle risorse potrebbero non essere visualizzate finché l'API Cloud Monitoring non è abilitata. Per Ops Agent, devi anche abilitare l'API Cloud Logging.
- Non disponi di autorizzazioni sufficienti per visualizzare le metriche. Non puoi visualizzare le metriche senza autorizzazioni sufficienti.
- Le VM del job non sono state eseguite. Le metriche non possono essere generate per un job finché non è in esecuzione almeno una delle VM del job.
- La configurazione o le autorizzazioni del job non supportavano le metriche dell'Ops Agent operativo. Alcune metriche delle risorse possono essere fornite solo da Ops Agent. Per supportare le metriche di Ops Agent, un job deve soddisfare i requisiti di Ops Agent, installare Ops Agent e utilizzare un account di servizio che possa scrivere metriche in Monitoring.
- Devi utilizzare un metodo o un filtro diverso per visualizzare le metriche. Alcuni metodi per visualizzare le metriche non mostrano le metriche per le VM dopo l'eliminazione. Inoltre, le metriche non vengono visualizzate se vengono omesse dai filtri o dal periodo di tempo visualizzato. Inoltre, i grafici delle metriche hanno risoluzioni regolabili che possono rendere piccole quantità di dati troppo sottili per essere visualizzate.
- Le metriche sono state eliminate. Non puoi visualizzare le metriche dopo l'eliminazione, che avviene automaticamente dopo i periodi di conservazione del monitoraggio.
Soluzione
Se mancano solo le metriche di Ops Agent, prova prima a risolvere il problema nel seguente modo:
- Verifica la configurazione del job procedendo nel seguente modo:
- Per visualizzare le informazioni di configurazione complete del job, visualizza i dettagli del job utilizzando gcloud CLI o l'API Batch. Utilizza l'output per i passaggi rimanenti.
- Assicurati che il account di servizio del job disponga delle autorizzazioni per scrivere le metriche dell'agente Ops.
- Assicurati che il job soddisfi tutti i requisiti dell'agente operativo.
- Assicurati che il job installi correttamente l'Ops Agent. Sebbene sia
possibile installare Ops Agent manualmente in un eseguibile, il
metodo consigliato è installare automaticamente Ops Agent impostando
il
campo
installOpsAgent
sutrue
.
- Se il problema persiste, consulta la sezione Risolvere i problemi relativi all'agente Ops nella documentazione di Google Cloud Observability.
In caso contrario, risolvi il problema nel seguente modo:
- Assicurati che l'API Monitoring sia abilitata per il tuo progetto:
- Assicurati che le VM del job abbiano iniziato l'esecuzione e che il tempo di esecuzione rientri ancora nei periodi di conservazione del monitoraggio. Puoi visualizzare la durata di esecuzione del job visualizzandone i dettagli.
- Verifica che non ci siano problemi con i metodi che utilizzi per visualizzare
le metriche procedendo nel seguente modo:
- A meno che tu non voglia visualizzare le metriche solo per le risorse in esecuzione, assicurati di visualizzare le metriche utilizzando Metrics Explorer o una dashboard personalizzata creata dai grafici di Metrics Explorer. Altri metodi, come le dashboard di Compute Engine, non mostrano le metriche per le risorse che sono state eliminate.
- Assicurati che il periodo di visualizzazione includa la durata dell'esecuzione del job. Per i grafici, assicurati anche che la risoluzione del grafico sia appropriata per i tuoi dati.
- Assicurati di non avere filtri che nascondono i dati.
- Se il problema persiste, consulta le pagine Risolvere i problemi di Cloud Monitoring nella documentazione di Google Cloud Observability.
Vincolo violato per gli indirizzi IP esterni delle VM
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un job non riuscito:
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.
Questo problema si verifica perché il tuo progetto, la tua cartella o la tua organizzazione ha impostato il
vincolo di policy dell'organizzazione compute.vmExternalIpAccess
in modo che solo le VM consentite possano utilizzare indirizzi IP esterni.
Soluzione
Per risolvere il problema, ricrea il job ed esegui una delle seguenti operazioni:
- Utilizza un progetto esente dal vincolo.
- Crea un job che blocca l'accesso esterno per tutte le VM.
Vincolo violato per le immagini attendibili
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un job non riuscito:
Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.
Soluzione
Questo problema si verifica perché il progetto ha impostato il vincolo dei criteri
immagini attendibili (compute.trustedImageProjects
) in modo che le immagini di Batch, che si trovano nel progetto
batch-custom-image
, non siano consentite.
Per risolvere il problema, esegui almeno una delle seguenti operazioni:
- Ricrea il job per specificare un'immagine del sistema operativo VM già consentita dal vincolo dei criteri per le immagini attendibili.
- Chiedi all'amministratore di consentire la modifica del vincolo criteri per l'utilizzo di immagini attendibili per consentire le immagini del sistema operativo VM dal progetto di immagini
batch-custom-image
. Per istruzioni, vedi Controllare l'accesso alle immagini del sistema operativo VM per Batch.
Il job non è riuscito durante l'utilizzo di un modello di istanza
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un job non riuscito che utilizza un modello di istanza:
INVALID_FIELD_VALUE,BACKEND_ERROR
Questo problema si verifica a causa di problemi poco chiari con il modello di istanza del job.
Soluzione
Per eseguire il debug del problema, segui questi passaggi:
- Crea un MIG utilizzando il modello di istanza e osserva se si verificano errori con maggiori dettagli.
(Facoltativo) Per provare a trovare maggiori informazioni, consulta l'operazione di lunga durata che sta creando il MIG nella console Google Cloud .
Codici di uscita per errori delle attività
Quando un'attività specifica in un job non va a buon fine, l'attività restituisce un codice di uscita diverso da zero.
A seconda di come configuri il
campo ignoreExitStatus
,
un'attività non riuscita potrebbe o meno causare l'esito negativo di un job.
Oltre a eventuali codici di uscita definiti in un eseguibile, un batch ha diversi codici di uscita riservati, tra cui i seguenti.
Prerilascio della VM (50001)
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un job:
Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.
Questo problema si verifica quando una VM spot per il job viene prerilasciata durante l'esecuzione.
Soluzione
Per risolvere il problema, esegui una delle seguenti operazioni:
- Riprova l'attività utilizzando i nuovi tentativi automatici o eseguendo di nuovo il job manualmente.
- Per garantire che non si verifichi la preemption, utilizza invece VM con il modello di provisioning standard.
Timeout dei report delle VM (50002)
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un 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.
Questo problema si verifica quando si verifica un timeout nel backend che ha causato l'interruzione della ricezione degli aggiornamenti da una VM per il job da parte di Batch. Purtroppo, molti guasti hardware o software possono causare la mancata risposta di una VM. Ad esempio, una VM potrebbe arrestarsi in modo anomalo a causa di un evento host temporaneo o di risorse insufficienti.
Soluzione
Per risolvere il problema:
- Se il problema è temporaneo e si risolve da solo, riprova a eseguire l'attività utilizzando i nuovi tentativi automatici delle attività o eseguendo di nuovo il job manualmente.
Se il problema persiste, identifica e risolvi la causa della mancata risposta della VM eseguendo una o più delle seguenti operazioni:
Consigliato: richiedi assistenza tramite Google Cloud Assistenza o l'etichetta Batch sui forum di Cloud.
Prova a identificare e risolvere il problema autonomamente. Ad esempio, se hai familiarità con Compute Engine, puoi provare a risolvere i problemi delle VM del job procedendo nel seguente modo:
Per identificare i nomi delle VM del tuo job:
- Visualizza i log del job.
- Filtra i log per
le voci che contengono la frase
report agent state:
. Esamina i log per determinare la VM per ogni tentativo di ogni attività. Ogni log è simile al seguente, in cui è presente una frase
instance:
e una o più frasitask_id:
.report agent state: ... instance:"INSTANCE_NAME" ... task_id:"task/JOB_UID-group0-TASK_INDEX/TASK_RETRIES/0 ..."
Questo log include i seguenti valori:
INSTANCE_NAME
: il nome della VM.JOB_UID
: l'ID univoco (UID) del job.TASK_INDEX
: l'indice dell'attività.TASK_RETRIES
: Il tentativo dell'attività eseguita su questa VM, formattato come numero di tentativi. Ad esempio, questo valore è0
per il primo tentativo di un'attività. Ogni attività viene tentata una sola volta, a meno che tu non attivi i tentativi automatici delle attività.
Risolvi i problemi relativi alle VM del job utilizzando la documentazione di Compute Engine. Ad esempio, vedi Risoluzione dei problemi di arresto e riavvio delle VM e Risoluzione dei problemi di avvio delle VM.
La VM è stata riavviata durante l'esecuzione (50003)
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un 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.
Questo problema si verifica quando una VM per un job viene riavviata in modo imprevisto durante l'esecuzione.
Soluzione
Per risolvere il problema, riprova a eseguire l'attività utilizzando i nuovi tentativi automatici delle attività o eseguendo di nuovo il job manualmente.
La VM e l'attività non rispondono (50004)
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un 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.
Questo problema si verifica quando un'attività raggiunge il limite di tempo di mancata risposta e non può essere annullata.
Soluzione
Per risolvere il problema, riprova a eseguire l'attività utilizzando i nuovi tentativi automatici delle attività o eseguendo di nuovo il job manualmente.
L'attività supera il tempo di esecuzione massimo (50005)
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un 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.
Questo problema si verifica nei seguenti casi:
- Il tempo di esecuzione di un'attività supera il limite di tempo specificato nel
campo
maxRunDuration
- Il tempo di esecuzione di un eseguibile supera il limite di tempo specificato nel
campo
timeout
Per identificare con precisione quale limite di tempo è stato superato,
visualizza i log del job
e trova un log che menzioni il codice di uscita 50005
. Questo campo textPayload
di questo log indica dove e quando è stato superato il limite di tempo.
Soluzione
Per risolvere il problema, prova a verificare il tempo di esecuzione totale richiesto dall'attività o dal runnable che ha superato il limite di tempo. Successivamente, effettua una delle seguenti operazioni:
Se prevedi questo errore solo occasionalmente, ad esempio per un'attività o un eseguibile con un tempo di esecuzione incoerente, puoi provare a ricreare il job e configurarlo per automatizzare i nuovi tentativi di esecuzione dell'attività per cercare di aumentare la percentuale di successo.
In caso contrario, se l'attività o l'eseguibile ha bisogno in modo costante e intenzionale di più tempo per terminare l'esecuzione rispetto al timeout corrente, imposta un timeout più lungo.
VM ricreata durante l'esecuzione (50006)
Problema
Il seguente problema viene visualizzato nel
campo statusEvents
per un 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.
Questo problema si verifica quando una VM per un job viene ricreata in modo imprevisto durante l'esecuzione.
Soluzione
Per risolvere il problema, riprova a eseguire l'attività utilizzando i nuovi tentativi automatici delle attività o eseguendo di nuovo il job manualmente.