Impostare il timeout delle attività per i job

Per impostazione predefinita, ogni attività viene eseguita per un massimo di 10 minuti. Puoi modificare questo valore impostando un tempo più breve o più lungo, fino a 168 ore (7 giorni). Per le attività che utilizzano le GPU, il timeout massimo disponibile è di 1 ora.

Puoi impostare il timeout dell'attività come descritto in questa pagina. Non esiste un timeout esplicito per l'esecuzione di un job: quando tutte le attività sono completate, l'esecuzione del job è terminata.

Le unità specificano una durata. Puoi specificare la durata del timeout come valore intero in secondi, minuti o ore. Ad esempio, per impostare la durata del timeout su 10 minuti e 5 secondi, specifica il valore 605 secondi.

Se la ripetizione dei tentativi è abilitata per il job, l'impostazione del timeout si applica a ogni tentativo di un'attività. Se il tentativo di attività non viene completato entro questo periodo di tempo, verrà interrotto. Più a lungo viene eseguito un job, maggiore è la probabilità che si verifichino problemi che ne causano l'errore, come errori di dipendenza downstream, errori di memoria insufficiente o problemi di infrastruttura. Ti consigliamo di abilitare la ripetizione dei tentativi per tutti i job, ma soprattutto per quelli con attività a lunga esecuzione.

Eventi di manutenzione

I job vengono sottoposti periodicamente a eventi di manutenzione. Durante un evento di manutenzione, tutte le attività in corso vengono migrate dalla macchina attuale a un'altra macchina. Durante la migrazione dell'attività, l'elaborazione viene brevemente sospesa.

Il processo di migrazione conserva lo stato dell'attività, con una notevole eccezione: le connessioni di rete VPC in uscita vengono interrotte durante gli eventi di manutenzione. Ti consigliamo di utilizzare librerie client in grado di gestire i ripristini occasionali delle connessioni.

Cloud Run stampa un messaggio di log ogni volta che la migrazione di un'attività inizia e termina.

Inoltre, se vuoi monitorare o gestire gli eventi di manutenzione in modo specifico, puoi intercettare il segnale SIGTSTP, che viene inviato 10 secondi prima della migrazione di un'attività. Dopo la migrazione, l'attività riceve un segnale SIGCONT immediatamente dopo il riavvio.

Il seguente esempio di Go è una funzione che intercetta questi segnali e stampa una voce di log:

func testSignals() {
    sigs := make(chan os.Signal, 1)
    signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT)
    go func() {
        for  {
            sig := <-sigs
            log.Printf("Got Signal: %v", sig)
        }
    }()
 }
 

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare i job Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo job Cloud Run interagisce con Google Cloud le API, come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.

Imposta il timeout dell'attività

Per specificare il timeout dell'attività per un job Cloud Run:

Console

  1. Nella Google Cloud console, vai alla pagina Job di Cloud Run:

    Vai a Cloud Run

  2. Fai clic su Esegui il deployment del container per compilare la pagina delle impostazioni iniziali del job. Se stai configurando un job esistente, selezionalo e fai clic su Visualizza e modifica la configurazione del job.

  3. Fai clic su Container, connessioni, sicurezza per espandere la pagina delle proprietà del job.

  4. Fai clic sulla scheda Generale.

    immagine

    • Nel campo Timeout attività , specifica la durata massima per le attività del job corrente e seleziona un'unità di tempo. Puoi specificare la durata del timeout solo come valore intero in secondi, minuti o ore. Ad esempio, per impostare una durata di 10 minuti e 5 secondi, nel campo Timeout attività , specifica 605 e seleziona l'unità di tempo come secondi.
  5. Fai clic su Crea o Aggiorna.

gcloud

  1. Per un job che stai creando:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT

    Sostituisci

    • JOB_NAME con il nome del job.
    • IMAGE_URL: un riferimento all' immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT con la durata massima per le attività del job, specificando la quantità di tempo e le unità: ad esempio, 10m5s sono dieci minuti e cinque secondi.
  2. Per un job che stai aggiornando:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

  1. Se stai creando un nuovo job, ignora questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Aggiorna l'attributo timeoutSeconds::

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
              timeoutSeconds: TIMEOUT

    Sostituisci:

    • JOB_NAME con il nome del job.
    • IMAGE_URL: un riferimento all' immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT con la durata massima per le attività del job, specificando la quantità di tempo e le unità. Puoi specificare il tempo solo come valore intero in secondi, minuti o ore. Ad esempio, per impostare una durata di 10 minuti e 5 secondi, specifica 605.

    Puoi anche specificare ulteriori dettagli di configurazione, come le variabili di ambiente o i limiti di memoria.

  3. Aggiorna la configurazione del job esistente:

    gcloud run jobs replace job.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una google_cloud_run_v2_job risorsa nella configurazione Terraform:

resource "google_cloud_run_v2_job" "default" {
  name     = "cloud-run-job-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    template {
      timeout = "3.500s"

      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

Visualizza le impostazioni del timeout dell'attività

Per visualizzare le impostazioni del timeout dell'attività corrente per il job Cloud Run:

Console

  1. Nella Google Cloud console, vai alla pagina dei job Cloud Run:

    Vai ai job Cloud Run

  2. Fai clic sul job che ti interessa per aprire la pagina Dettagli job.

  3. Fai clic su Visualizza e modifica la configurazione del job.

  4. Individua l'impostazione del timeout dell'attività nei dettagli di configurazione.

gcloud

  1. Utilizza il seguente comando:

    gcloud run jobs describe JOB_NAME
  2. Individua l'impostazione del timeout dell'attività nella configurazione restituita.