Risoluzione dei problemi

Questa pagina mostra come risolvere i problemi relativi a Batch.

Se stai tentando di risolvere i problemi di un job che non hai un messaggio di errore, controlla se la cronologia del job contiene Messaggi di errore tramite la visualizzazione degli eventi di stato prima di esaminare questo documento.

Per ulteriori informazioni sulla risoluzione dei problemi di un job, vedi anche documenti:

Errori di creazione del job

Se non riesci a creare un job, la causa potrebbe essere uno degli errori in questa sezione.

Quota insufficiente

Problema

Quando provi a creare un job, si verifica uno dei seguenti problemi:

  • Quando il job si trova QUEUED, il seguente problema si verifica Campo statusEvents:

    Quota checking process decides to delay scheduling for the job JOB_UID due to inadequate quotas [Quota: QUOTA_NAME, limit: QUOTA_LIMIT, usage: QUOTA_CURRENT_USAGE, wanted: WANTED_QUOTA.].
    

    Questo problema indica che il job è stato ritardato a causa utilizzo attuale (QUOTA_USAGE) e limite (QUOTA_LIMIT) una quota di QUOTA_NAME ha impedito utilizzo richiesto (WANT_QUOTA).

  • Quando il job è in Stati QUEUED, SCHEDULED o FAILED, viene visualizzato uno dei seguenti problemi Campo statusEvents:

    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in region REGION
    
    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in zone ZONE
    

    Questo problema indica che la creazione di una risorsa non è riuscita perché la richiesta ha superato la quota QUOTA_NAME, pertanto ha un limite di QUOTA_LIMIT nel località specificata.

Soluzione

Per risolvere il problema:

  • Se il job è stato ritardato, prova ad attendere il rilascio di una quota maggiore.

  • Se il job non è riuscito a causa di una quota insufficiente o se questi ritardi persistono, Per evitare una quota insufficiente, procedi in uno dei seguenti modi:

    • Crea job che utilizzano una quota inferiore o inferiore a quella quota. Ad esempio, specifica una località consentita o un tipo di risorsa diversi per il job o suddividi l'utilizzo della quota tra progetti aggiuntivi.

    • Richiedi a Google Cloud un limite di quota più elevato per il tuo progetto.

Per ulteriori informazioni, vedi Quote e limiti batch e Utilizza 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 istanza, il problema si presenta 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 si presenta 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 ha autorizzazioni sufficienti per agire come account di servizio usato dal job che è controllato 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 corrisponde all'account di servizio specificato nella definizione del job.
  2. Assicurati che all'utente che crea il job sia stato concesso Ruolo Utente account di servizio (roles/iam.serviceAccountUser) dell'account di servizio specificato per il job. Per ulteriori informazioni, vedi Gestisci 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 ulteriori informazioni, vedi Specifica la rete per un job.

Rete non valida per 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 ulteriori informazioni su come configurare il networking per un job in un Perimetro di servizio Controlli di servizio VPC, consulta Utilizzare i Controlli di servizio VPC con batch.

Problemi di job ed errori di errore

In caso di problemi con un job non eseguito correttamente o non riuscito per motivi non chiari, potrebbe essere dovuto a uno degli errori in questa sezione o uno dei codici di uscita nel seguente Sezione Codici di uscita di errore delle attività.

Nessun log in Cloud Logging

Problema

Devi eseguire il debug di un job, ma per il job non viene visualizzato alcun log in 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 produrrà log se il servizio non è abilitato del progetto.
  • L'account di servizio del job non dispone dell'autorizzazione per scrivere log. Un job non può produrre log senza autorizzazioni sufficienti.
  • Il job non è stato configurato per produrre log. per generare i log Cloud Logging deve essere abilitato per un job. Il job gli elementi eseguibili devono essere configurati anche per scrivere le informazioni che vuoi vengono visualizzati nei log nell'output standard (stdout) con errori standard (stderr). Per ulteriori informazioni, vedi Analizza un job utilizzando i log.
  • Le attività non sono state eseguite. I log non possono essere generati finché le attività non sono state risorse assegnate e iniziare l'esecuzione.
  • Cloud Logging è stato configurato in modo da 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 i report 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 Ruolo IAM Autore log (roles/logging.logWriter). Per ulteriori informazioni, vedi Abilitare Batch per un progetto.
  4. Visualizza i dettagli del job utilizzando gcloud CLI o l'API Batch. I dettagli del job possono aiutarti a capire perché non è stato completato generare log e potrebbero fornire informazioni che speravi di ottenere dai log. Ad esempio, procedi nel seguente modo:
    1. Per verificare che il logging sia abilitato, esamina il job Campo logsPolicy:
    2. Per verificare che l'esecuzione del job sia riuscita, esamina la tabella Campo status:

Dopo aver apportato le modifiche, ricrea il job e attendi che venga completarla prima di controllare i log.

Nessun report sull'agente di servizio

Problema

Nella sezione Campo statusEvents per un job non 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 riporta Agente di servizio batch.

Questo problema si verifica spesso per i seguenti motivi:

  • Le VM del job non hanno autorizzazioni sufficienti. Le VM di un job richiedono autorizzazioni specifiche per segnalare il loro stato all'amministratore Agente di servizio batch. Puoi fornire queste autorizzazioni per le VM di un job, concedendo 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 la rete l'accesso per comunicare con l'agente di servizio Batch.
  • Le VM del job utilizzano un'immagine del sistema operativo delle VM batch obsoleta o un'immagine del sistema operativo VM con un software agente di servizio batch obsoleto. Le VM del job richiedono un software nell'immagine del sistema operativo VM che fornisce delle dipendenze attuali per la generazione di report 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 l'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 Compute Engine l'account di servizio predefinito.
    2. Verifica che l'account di servizio del job disponga delle autorizzazioni necessarie per Ruolo Reporter agente batch (roles/batch.agentReporter). Per ulteriori informazioni, vedi Gestire l'accesso e Limitazione dell'utilizzo degli account di servizio.

      Ad esempio, per concedere alla classe all'account di servizio predefinito di Compute Engine le autorizzazioni richieste, utilizza questo 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 l'accesso alla rete corretto. Per ulteriori informazioni, vedi Panoramica del networking in batch e Risolvi i problemi di rete più comuni.

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

    1. Se hai abilitato Cloud Logging per il job, puoi identificare il problema controllando una delle seguenti opzioni log degli agenti (batch_agent_logs). Per ulteriori informazioni, vedi Analizzare un job utilizzando i log.

      • Log per l'errore 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 comunicando con l'agente di servizio Batch che utilizzi del job, ad esempio cloud-batch-agent_20221103.00_p00.

      • Registra un errore relativo all'immagine del sistema operativo delle 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 da Batch e 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, ricrea l'immagine personalizzata in base a dell'ultima versione di un'immagine pubblica supportata.

      Per ulteriori informazioni, vedi 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 mancano alcune o tutte le metriche previste.

Questo problema si verifica spesso per i seguenti motivi:

  • L'API non è stata abilitata per il progetto. Anche se configuri correttamente tutto il resto nel progetto, le metriche potrebbero non essere visualizzate finché l'API Cloud Monitoring non viene abilitata. Per Ops Agent, devi abilitare anche l'API Cloud Logging.
  • Non hai autorizzazioni sufficienti per visualizzare le metriche. Non puoi possono visualizzare le metriche senza autorizzazioni sufficienti.
  • Le VM del job non sono state eseguite. Impossibile generare metriche per un job finché almeno una delle VM del job non è in esecuzione.
  • 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 operazioni le metriche dell'agente, un job deve soddisfare i requisiti di Ops Agent, installare Ops Agent e utilizzare un account di servizio che possa scrivere metriche monitoraggio.
  • 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 le VM vengono eliminati. Inoltre, le metriche non vengono visualizzate se vengono omesse dai filtri o il periodo di tempo visualizzato. Inoltre, i grafici delle metriche presentano dati regolabili che possono causare una riduzione della quantità di dati troppo sottile per essere visualizzata.
  • Le metriche sono state eliminate. Non puoi visualizzare le metriche dopo averle eliminate, che viene eseguita automaticamente dopo la conservazione cicli.

Soluzione

Se mancano solo le metriche di Ops Agent, prova innanzitutto a risolvere il problema eseguendo la seguenti:

  1. Verifica la configurazione del job procedendo nel seguente modo:
    1. Per vedere 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 abbia autorizzazioni di scrittura di metriche di Ops Agent.
    3. Assicurati che il job soddisfi tutte le Requisiti di Ops Agent.
    4. Assicurati che il job installi correttamente Ops Agent. Anche se installare manualmente Ops Agent in un file eseguibile, il metodo consigliato è installare automaticamente Ops Agent l'impostazione Campo installOpsAgent a true.
  2. Se il problema persiste, consulta Risolvi i problemi di Ops Agent nella documentazione di Google Cloud Observability.

In caso contrario, risolvi il problema procedendo nel seguente modo:

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

    Abilita l'API

  2. Assicurati che le VM del job siano state avviate e che il tempo di esecuzione sia ancora all'interno Monitoraggio dei periodi di conservazione. Puoi visualizzare il tempo di esecuzione del job per la visualizzazione dei dettagli del job.
  3. Verifica che non ci siano problemi con i metodi che utilizzi per visualizzare le metriche nel seguente modo:
    1. A meno che tu non voglia visualizzare le metriche solo per le risorse in esecuzione, assicurati che stai visualizzando le metriche utilizzando Metrics Explorer o un dashboard creata dai grafici di Metrics Explorer. Altri metodi, ad esempio come dashboard di Compute Engine, non mostrano le metriche per le risorse eliminati.
    2. Assicurati che periodo di visualizzazione include il tempo di esecuzione del job. Per i grafici, assicurati inoltre che risoluzione del grafico sia appropriato per i tuoi dati.
    3. Assicurati di non avere filtri che nascondono i dati.
  4. Se il problema persiste, consulta le Risolvere i problemi di Cloud Monitoring disponibili nella documentazione di Google Cloud Observability.

Vincolo violato per gli indirizzi IP esterni della VM

Problema

Nella sezione 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é nel progetto, nella cartella o nell'organizzazione è stato impostato Vincolo dei criteri dell'organizzazione compute.vmExternalIpAccess per fare in modo che solo le VM nella lista consentita possano usare indirizzi IP esterni.

Soluzione

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

Vincolo violato per immagini attendibili

Problema

Nella sezione 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 Vincolo del criterio per le immagini attendibili (compute.trustedImageProjects) in modo che le immagini da Batch, che sono Progetto di immagini batch-custom-image non consentito.

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

Job non riuscito durante l'utilizzo di un modello di istanza

Problema

Nella sezione 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 ulteriormente il debug del problema:

  1. Crea un gruppo di istanze gestite utilizzando il modello di istanza e vedere se si verificano errori con maggiori dettagli.
  2. (Facoltativo) Per provare a trovare ulteriori informazioni, consulta la operazioni a lunga esecuzione che crea il gruppo di istanze gestite nella console Google Cloud.

    Vai a Operazioni di Compute Engine

Codici di uscita di errore dell'attività

Quando un'attività specifica di un job ha esito negativo, l'attività restituisce un valore diverso da zero codice di uscita. In base a come configuri Campo ignoreExitStatus, un'attività non riuscita può causare o meno la mancata riuscita di un job.

Oltre ai codici di uscita definiti in un elemento eseguibile, Il batch ha diversi codici di uscita riservati, tra cui il i seguenti codici di uscita.

Prerilascio VM (50001)

Problema

Nella sezione Campo statusEvents per un lavoro:

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, procedi in uno dei seguenti modi:

  • Riprova l'attività utilizzando nuovi tentativi automatici di attività o eseguire di nuovo manualmente il job.
  • Per garantire che non ci sia prerilascio, utilizza le VM con di provisioning standard.

Timeout report VM (50002)

Problema

Nella sezione Campo statusEvents per un lavoro:

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 un VM per il job per non ricevere più aggiornamenti.

Soluzione

Per risolvere il problema, riprova a eseguire l'attività utilizzando nuovi tentativi automatici di attività o eseguire di nuovo manualmente il job.

VM riavviata durante l'esecuzione (50003)

Problema

Nella sezione Campo statusEvents per un lavoro:

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 inaspettatamente durante il tempo di esecuzione.

Soluzione

Per risolvere il problema, riprova a eseguire l'attività utilizzando nuovi tentativi automatici di attività o eseguire di nuovo manualmente il job.

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

Problema

Nella sezione Campo statusEvents per un lavoro:

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 per cui non risponde e non può essere annullata.

Soluzione

Per risolvere il problema, riprova a eseguire l'attività utilizzando nuovi tentativi automatici di attività o eseguire di nuovo manualmente il job.

L'attività viene eseguita oltre il runtime massimo (50005)

Problema

Nella sezione Campo statusEvents per un lavoro:

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 in Campo maxRunDuration
  • Il tempo di esecuzione di un elemento eseguibile supera il limite di tempo specificato in Campo timeout

Per identificare concretamente quale limite di tempo è stato superato, visualizza i log per il 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 dell'attività o eseguibile che abbia superato il limite di tempo. Effettua poi una delle seguenti operazioni:

  • Se ti aspetti questo errore solo occasionalmente, ad esempio per un'attività o eseguibile con un tempo di esecuzione incoerente, puoi provare a ricreare il job per automatizzare i nuovi tentativi delle attività per cercare di aumentare la percentuale di successo.

  • Altrimenti, se l'attività o l'esecuzione può essere eseguita in modo coerente e intenzionale di tempo per terminare l'esecuzione rispetto a quanto consentito dal timeout attuale, impostare un timeout più lungo.

VM ricreata durante l'esecuzione (50006)

Problema

Nella sezione Campo statusEvents per un lavoro:

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

Soluzione

Per risolvere il problema, riprova a eseguire l'attività utilizzando nuovi tentativi automatici di attività o eseguire di nuovo manualmente il job.

Passaggi successivi