Risoluzione dei problemi

Questa pagina mostra come risolvere i problemi relativi a Batch.

Se stai cercando di risolvere i problemi relativi a un job per il quale 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 del job

Se non riesci a creare un job, il motivo potrebbe essere uno degli errori descritti 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 campo statusEvents 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 è in ritardo perché l'utilizzo corrente (QUOTA_USAGE) e il limite (QUOTA_LIMIT) della quota QUOTA_NAME hanno impedito l'utilizzo richiesto (WANT_QUOTA) del job.

  • Quando il job è in stato QUEUED, SCHEDULED o FAILED, nel campo statusEvents 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 di QUOTA_LIMIT nella località specificata.

Soluzione

Per risolvere il problema:

  • Se il job è in ritardo, prova ad attendere che venga rilasciata una quota maggiore.

  • Se il job non è riuscito a causa di una quota insufficiente o se questi ritardi persistono, prova a evitare una quota insufficiente adottando una delle seguenti misure:

    • Crea job che utilizzino una quota inferiore o una quota diversa. Ad esempio, specifica una località o un tipo di risorsa consentita diverso per il job o suddividi l'utilizzo della quota in altri progetti.

    • Richiedi un limite di quota più alto per il tuo progetto da Google Cloud.

Per ulteriori informazioni, consulta Quote e limiti per i batch e Utilizzare le quote.

Autorizzazioni insufficienti per agire come account di servizio

Problema

Quando provi a creare un job, si verifica il seguente problema:

  • Se il job non utilizza un modello di istanze, il problema si presenta nel seguente modo:

    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 si presenta nel seguente modo:

    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 delle autorizzazioni sufficienti per agire come account di servizio utilizzato dal job, che è controllato dall'autorizzazione iam.serviceAccounts.actAs.

Soluzione

Per risolvere il problema:

  1. Se il job utilizza un modello di istanza, verifica che l'account di servizio specificato nel modello di istanza corrisponda all'account di servizio specificato nella definizione del job.
  2. Assicurati che all'utente che sta creando il job sia stato concesso il ruolo Utente account di servizio (roles/iam.serviceAccountUser) nell'account di servizio specificato per il job. Per ulteriori informazioni, consulta Gestire l'accesso.
  3. 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:

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 con indirizzi IP esterni in un perimetro di servizio VPC Service Controls.

Per risolvere il problema, crea un job che blocchi l'accesso esterno per tutte le VM.

Per ulteriori informazioni su come configurare la rete per un job in un perimetro di servizio VPC Service Controls, consulta Utilizzare i Controlli di servizio VPC con Batch.

Problemi relativi ai job ed errori di mancata riuscita

Se hai problemi con un job che non funziona correttamente o non è riuscito per motivi poco chiari, il problema potrebbe essere dovuto a uno degli errori riportati in questa sezione o a uno dei codici di uscita riportati nella sezione Codici di uscita relativi agli errori di task.

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.
  • L'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 produrre log. Per produrre log in Cloud Logging, è necessario che in un job sia attivato Cloud Logging. I comandi eseguibili del job devono essere configurati anche per scrivere le informazioni che vuoi visualizzare nei log negli stream di output standard (stdout) ed errore standard (stderr). Per ulteriori informazioni, consulta Analisi di un job tramite i log.
  • Le attività non sono state eseguite. I log non possono essere generati finché alle attività non sono state assegnate risorse e non iniziano a essere eseguite.
  • 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:

  1. Assicurati che i log non siano stati esclusi automaticamente da Cloud Logging disattivando eventuali filtri di esclusione per Cloud Logging.
  2. Assicurati che l'API Cloud Logging sia abilitata per il tuo progetto.
  3. Assicurati che l'account di servizio per il job abbia il ruolo IAM Writer log (roles/logging.logWriter). Per ulteriori informazioni, consulta la sezione Attivare la funzionalità Batch per un progetto.
  4. Visualizza i dettagli del job utilizzando l'interfaccia a riga di comando gcloud 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, segui questi passaggi:
    1. Per verificare che il logging sia abilitato, controlla il campo logsPolicy del job.
    2. Per verificare che l'esecuzione del job sia terminata correttamente, esamina il campo status del job.

Dopo aver apportato le modifiche, ricrea il job e attendi che la sua esecuzione sia completata prima di controllare i log.

Nessun report sugli agenti di servizio

Problema

Nel campo statusEvents viene visualizzato il seguente problema per un job che non funziona 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 invia report all'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 Report aggregato dell'agente (roles/batch.agentReporter) all'account di servizio del job.
  • Le VM del job hanno problemi di rete. Le VM di un job richiedono accesso alla rete per comunicare con l'agente di servizio Batch.
  • Le VM del job utilizzano un'immagine del sistema operativo VM Batch obsoleta o un'immagine del sistema operativo VM con software dell'agente di servizio Batch obsoleto. Le VM del job richiedono software nell'immagine del sistema operativo VM che fornisca le dipendenze attuali per i report all'agente di servizio Batch.

Soluzione

Per risolvere il problema:

  1. Verifica che le VM del job dispongano delle autorizzazioni necessarie per segnalare il loro stato all'agente di servizio Batch.

    1. Per identificare il service account del job, visualizza i dettagli del job utilizzando gcloud CLI o l'API Batch. Se non è elencato alcun account di servizio, per impostazione predefinita il job utilizza l'account di servizio predefinito di Compute Engine.
    2. Verifica che l'account di servizio del job disponga delle autorizzazioni per il ruolo Agente di reporting batch (roles/batch.agentReporter). Per ulteriori informazioni, consulta Gestire l'accesso e Limitare l'utilizzo dell'account di servizio.

      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
      
  2. Verifica che le VM del job abbiano accesso alla rete adeguato. Per ulteriori informazioni, consulta la panoramica della rete in batch e la sezione Risolvere i problemi di rete comuni.

  3. Se hai specificato l'immagine del sistema operativo della VM per il job, verifica che sia attualmente supportata.

    1. Se hai attivato Cloud Logging per il job, puoi identificarlo controllando se sono presenti i seguenti log dell'agente (batch_agent_logs). Per ulteriori informazioni, consulta Analisi di un job utilizzando i log.

      • Log per 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 errore relativo all'immagine del sistema operativo della 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 del sistema operativo VM di Batch utilizzata dal job, ad esempio batch-debian-11-20220909-00-p00.

    2. Puoi risolvere il 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.

  4. 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 del progetto, le metriche delle risorse potrebbero non essere visualizzate finché l'API Cloud Monitoring non viene abilitata. Per Ops Agent, devi anche attivare 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. Non è possibile generare metriche per un jobfinché non è in esecuzione almeno una delle VM del job.
  • La configurazione o le autorizzazioni del job non supportavano le metriche di Ops Agent. 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 le metriche in Monitoring.
  • Per visualizzare le metriche, devi utilizzare un metodo o un filtro diverso. Alcuni metodi per visualizzare le metriche non mostrano le metriche per le VM dopo che queste sono state eliminate. Inoltre, le metriche non vengono visualizzate se sono omesse dai filtri o dal periodo di tempo visualizzato. Inoltre, i grafici delle metriche hanno risoluzioni regolabili che possono causare la visualizzazione di piccole quantità di dati troppo sottili.
  • Le metriche sono state eliminate. Non puoi visualizzare le metriche dopo che sono state eliminate, cosa che avviene automaticamente al termine dei periodi di retention del monitoraggio.

Soluzione

Se mancano solo le metriche di Ops Agent, prova prima a risolvere il problema nel seguente modo:

  1. Verifica la configurazione del job nel seguente modo:
    1. 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.
    2. Assicurati che l'account di servizio del job disponga delle autorizzazioni per scrivere le metriche di Ops Agent.
    3. Assicurati che il job soddisfi tutti i requisiti di Ops Agent.
    4. Assicurati che il job installi correttamente l'agente operativo. Sebbene sia possibile installare manualmente l'agente Ops in un file eseguibile, il metodo consigliato è installarlo automaticamente impostando il campo installOpsAgent su true.
  2. Se il problema persiste, consulta Risolvere i problemi relativi a Ops Agent nella documentazione di Google Cloud Observability.

In caso contrario, risolvi il problema nel seguente modo:

  1. Assicurati che l'API Monitoring sia abilitata per il tuo progetto:

    Enable the API

  2. Assicurati che le VM del job siano iniziate a funzionare e che il tempo di esecuzione rientri ancora nei periodi di conservazione del monitoraggio. Puoi visualizzare il tempo di esecuzione del job visualizzando i dettagli del job.
  3. Verifica che non ci siano problemi con i metodi che utilizzi per visualizzare le metriche:
    1. A meno che tu non voglia visualizzare le metriche solo per le risorse in esecuzione, assicurati di visualizzarle utilizzando Metrics Explorer o una dashboard personalizzata creata con i grafici di Metrics Explorer. Altri metodi, come le dashboard di Compute Engine, non mostrano le metriche relative alle risorse eliminate.
    2. Assicurati che il periodo di visualizzazione includa il tempo di esecuzione del job. Per i grafici, assicurati inoltre che la risoluzione del grafico sia appropriata per i tuoi dati.
    3. Assicurati che non siano presenti filtri che nascondono i dati.
  4. Se il problema persiste, consulta le pagine sulla risoluzione dei problemi di monitoraggio di Cloud nella documentazione di Google Cloud Observability.

Vincolo violato per gli indirizzi IP esterni della 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 progetto, la cartella o l'organizzazione ha impostato il compute.vmExternalIpAccess vincolo dei criteri dell'organizzazione in modo che solo le VM inserite nella lista consentita possano utilizzare indirizzi IP esterni.

Soluzione

Per risolvere il problema, ricrea il job ed esegui una delle seguenti operazioni:

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é nel progetto è stato impostato il vincolo dei criteri per le immagini attendibili (compute.trustedImageProjects) in modo che le immagini di Batch, che si trovano nel progetto di immagini batch-custom-image, non siano consentite.

Per risolvere il problema, esegui almeno una delle seguenti operazioni:

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 non chiari con il modello di istanza del job.

Soluzione

Per eseguire ulteriormente il debug del problema:

  1. Crea un gruppo di istanze gestite utilizzando il modello di istanza e osserva se si verificano errori con ulteriori dettagli.
  2. (Facoltativo) Per provare a trovare ulteriori informazioni, consulta la operazione a lungo termine che sta creando il gruppo di istanze gestite nella console Google Cloud.

    Vai a Operazioni Compute Engine

Codici di uscita relativi agli 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 il fallimento di un job.

Oltre a eventuali codici di uscita definiti in un file eseguibile, un file batch ha diversi codici di uscita riservati, tra cui i seguenti.

Preemption della VM (50001)

Problema

Nel campo statusEvents di un job viene visualizzato il seguente problema:

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 il runtime.

Soluzione

Per risolvere il problema, esegui una delle seguenti operazioni:

  • Riprova l'attività utilizzando i tentativi automatici delle attività o eseguendo di nuovo manualmente il job.
  • Per garantire che non sia presente alcuna prelazione, utilizza invece le VM con il modello di provisioning standard.

Tempo di attesa del report della VM (50002)

Problema

Nel campo statusEvents di un job viene visualizzato il seguente problema:

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 il mancato ricevimento di aggiornamenti da una VM per il job da parte di Batch. Purtroppo, molti guasti hardware o software possono causare l'interruzione della risposta di una VM. Ad esempio, una VM potrebbe arrestarsi in modo anomalo a causa di un evento temporaneo dell'host o di risorse insufficienti.

Soluzione

Per risolvere il problema:

  1. Se il problema è temporaneo e si risolve da solo, riprova a eseguire l'attività utilizzando i riprova automatici delle attività o eseguendo di nuovo manualmente il job.
  2. Se il problema persiste, identifica e risolvi il problema che causa la mancata risposta della VM eseguendo una o più delle seguenti operazioni:

    • Consigliato: richiedi assistenza tramite Google Cloud Assistenza o tramite l'etichetta Batch nei forum 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 nel seguente modo:

      1. Per identificare i nomi delle VM del tuo job:

        1. Visualizza i log del job.
        2. Filtra i log per trovare le voci che contengono la frase report agent state:.
        3. Esamina i log per determinare la VM per ogni tentativo di ogni attività. Ogni log è simile al seguente, in cui sono presenti una frase instance: e una o più frasi task_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 nuovi tentativi. Ad esempio, questo valore è 0 per il primo tentativo di un'attività. Ogni attività viene tentata una sola volta, a meno che non attivi i tentativi ripetuti delle attività automatiche.
      2. Risolvi i problemi relativi alle VM del tuo job utilizzando la documentazione di Compute Engine. Ad esempio, consulta 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

Nel campo statusEvents di un job viene visualizzato il seguente problema:

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 si riavvia in modo imprevisto durante l'esecuzione.

Soluzione

Per risolvere il problema, riprova a eseguire l'attività utilizzando i tentativi automatici o eseguendo nuovamente il job manualmente.

La VM e l'attività non rispondono (50004)

Problema

Nel campo statusEvents di un job viene visualizzato il seguente problema:

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 tentativi automatici o eseguendo nuovamente il job manualmente.

L'attività supera il tempo di esecuzione massimo (50005)

Problema

Nel campo statusEvents di un job viene visualizzato il seguente problema:

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 in modo specifico il limite di tempo superato, visualizza i log del job e individua un log che menzioni il codice di uscita 50005. Il 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 dall'eseguibile che ha superato il limite di tempo. Poi, esegui una delle seguenti operazioni:

  • Se prevedi questo errore solo occasionalmente, ad esempio per un'attività o un programma executable con un tempo di esecuzione incoerente, puoi provare a ricreare il job e configurarlo per automatizzare i tentativi di esecuzione delle attività per provare ad aumentare il tasso di successo.

  • In caso contrario, se l'attività o l'eseguibile richiede in modo coerente e intenzionale più tempo per l'esecuzione rispetto al timeout corrente, imposta un timeout più lungo.

VM ricreata durante l'esecuzione (50006)

Problema

Nel campo statusEvents di un job viene visualizzato il seguente problema:

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 tentativi automatici o eseguendo nuovamente il job manualmente.

Passaggi successivi