Risoluzione dei problemi

Questa pagina mostra come risolvere i problemi relativi a Batch.

Se stai tentando di risolvere un problema per un job per il quale non è stato visualizzato un messaggio di errore, controlla se la cronologia del job contiene messaggi di errore visualizzando gli eventi di stato prima di esaminare il documento.

Per ulteriori informazioni sulla risoluzione dei problemi di un job, consulta anche i seguenti 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 è 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 è stato ritardato perché l'utilizzo attuale (QUOTA_USAGE) e il limite (QUOTA_LIMIT) della quota di QUOTA_NAME hanno impedito l'utilizzo richiesto del job (WANT_QUOTA).

  • Quando il job è negli stati QUEUED, SCHEDULED o FAILED, viene visualizzato uno dei seguenti problemi nel 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, che ha un limite di QUOTA_LIMIT nella località specificata.

Soluzione

Per risolvere il problema:

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

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

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

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

Per ulteriori informazioni, consulta Quote e limiti 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 istanza, il problema si verifica 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
    

In genere questo problema si verifica perché l'utente che crea il job non dispone delle autorizzazioni sufficienti per agire come account di servizio utilizzato dal job, che è controllata 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) per l'account di servizio specificato per il job. Per maggiori 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 ulteriori informazioni, consulta Specifica della 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 dei Controlli di servizio VPC.

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

Per ulteriori informazioni su come configurare il networking per un job in un perimetro di servizio dei Controlli di servizio VPC, consulta Utilizzare i Controlli di servizio VPC con Batch.

Errori di job non riusciti

Se hai problemi con un job che non è in esecuzione correttamente o non è riuscito per motivi poco chiari, potrebbero essere dovuti a uno degli errori in questa sezione o a uno dei codici di uscita nella seguente 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 tutti gli altri elementi per i log di un job, non produrrà log se il servizio non è abilitato per il tuo progetto.
  • L'account di servizio del job non ha l'autorizzazione per scrivere log. Un job non può produrre log senza autorizzazioni sufficienti.
  • Il job non è stato configurato per produrre i log. Per generare log in Cloud Logging, un job deve avere Cloud Logging abilitato. Gli elementi eseguibili del job devono anche essere configurati in modo da scrivere le informazioni da visualizzare nei log per i flussi di output standard (stdout) e di errore standard (stderr). Per ulteriori informazioni, consulta Analizzare un job utilizzando i log.
  • Le attività non sono state eseguite. I log non possono essere generati finché alle attività non vengono assegnate le risorse e non vengono eseguite.

Soluzione

Per risolvere il problema:

  1. Assicurati che l'API Cloud Logging sia abilitata per il tuo progetto.
  2. Assicurati che l'account di servizio per il job disponga del ruolo IAM Writer log (roles/logging.logWriter). Per maggiori informazioni, consulta Abilitare batch per un progetto.
  3. 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, segui questi passaggi:
    1. Per verificare che il logging sia abilitato, esamina il campo logsPolicy del job.
    2. Per verificare che il job sia stato eseguito correttamente, rivedi il campo status del job.

Nessun agente di servizio che segnala

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 segnala l'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 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 di 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 agente di servizio Batch obsoleto. Le VM del job richiedono un software nella relativa 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 proprio 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, per impostazione predefinita il job utilizza l'account di servizio predefinito di Compute Engine.
    2. Conferma che l'account di servizio del job disponga delle autorizzazioni per il ruolo Reporter agente batch (roles/batch.agentReporter). Per ulteriori informazioni, consulta Gestione dell'accesso e Limitazione dell'utilizzo degli account di servizio.

      Ad esempio, per concedere all'account di servizio predefinito di Compute Engine le autorizzazioni richieste, utilizza questo comando:

      gcloud projects add-iam-policy-binding \
        --role roles/batch.agentReporter \
        --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
      

      Sostituisci PROJECT_NUMBER con il numero di progetto.

  2. Verifica che le VM del job abbiano un accesso alla rete corretto. Per maggiori informazioni, consulta la pagina Panoramica del networking in batch e Risolvere i problemi di networking comuni.

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

    1. Se hai abilitato Cloud Logging per il job, puoi identificare il problema verificando la presenza di uno dei seguenti log degli agenti (batch_agent_logs). Per ulteriori informazioni, consulta Analizzare un job utilizzando i log.

      • Registra errore software obsoleto dell'agente di servizio Batch:

        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 la comunicazione con l'agente di servizio Batch utilizzato dal job, ad esempio cloud-batch-agent_20221103.00_p00.

      • Registra errore immagine del sistema operativo Batch VM 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 maggiori informazioni, consulta Immagini VM supportate del sistema operativo e Visualizzare le immagini del sistema operativo delle VM.

  4. Ricrea il job.

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 vincolo dei criteri dell'organizzazione compute.vmExternalIpAccess in modo che solo le VM incluse 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é il progetto ha impostato il vincolo per il criterio delle immagini attendibili (compute.trustedImageProjects) in modo che non siano consentite le immagini di Batch, che si trovano nel progetto di immagini batch-custom-image.

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

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 controlla se si verificano errori con ulteriori dettagli.
  2. (Facoltativo) Per provare a trovare ulteriori informazioni, consulta l'operazione a lunga esecuzione che crea il gruppo di istanze gestite nella console Google Cloud.

    Vai a Operazioni di Compute Engine

Codici di uscita per errori delle attività

Quando un'attività specifica in un job ha esito negativo, restituisce un codice di uscita diverso da zero. A seconda di come configuri il campo ignoreExitStatus, un'attività non riuscita potrebbe causare o meno l'esito negativo di un job.

Oltre ai codici di uscita che definisci in un elemento eseguibile, un batch ha diversi codici di uscita riservati, inclusi i seguenti codici di uscita.

Prerilascio delle 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 tempo di esecuzione.

Soluzione

Per risolvere il problema, esegui una delle seguenti operazioni:

  • Riprova a eseguire l'attività utilizzando i nuovi tentativi delle attività automatizzate o eseguendo di nuovo il job manualmente.
  • Per garantire l'assenza di prerilascio, utilizza invece le VM con il modello di provisioning standard.

Timeout report 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 a causa del quale una VM per il job non riceve più aggiornamenti.

Soluzione

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

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

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 che non risponde 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à viene eseguita oltre 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 elemento eseguibile supera il limite di tempo specificato nel campo timeout

Per identificare nello specifico 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 del 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'elemento eseguibile che ha superato il limite di tempo. Quindi, esegui una delle seguenti operazioni:

  • Se ti aspetti questo errore solo occasionalmente, ad esempio per un'attività o quando è eseguibile con un tempo di esecuzione incoerente, puoi provare a ricreare il job e configurarlo in modo che automatizza i nuovi tentativi dell'attività per cercare di aumentare la percentuale di successo.

  • In caso contrario, se l'esecuzione dell'attività o dell'esecuzione costante e intenzionale ha bisogno di più tempo per essere completato rispetto a quanto consentito dal timeout attuale, 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 inaspettatamente durante il tempo di 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.

Passaggi successivi