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 GPU, il timeout massimo disponibile è di 12 ore (anteprima).
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 state 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 come 605 secondi.
Se per il job è abilitata la ripetizione dei tentativi, 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, più è probabile che si verifichino problemi che ne causano l'esito negativo, come errori di dipendenza downstream, errori out of memory o problemi di infrastruttura. Ti consigliamo di attivare i nuovi tentativi per tutti i job, ma soprattutto per quelli con attività a lunga esecuzione.
Eventi di manutenzione
Durante gli eventi di manutenzione, viene eseguita la migrazione live delle attività che non utilizzano GPU. Non è possibile eseguire la migrazione live delle attività che utilizzano GPU, che vengono invece terminate; scopri di più.
Il processo di migrazione conserva lo stato dell'attività, con un'eccezione importante: le connessioni di rete VPC in uscita si interrompono durante gli eventi di manutenzione. Ti consigliamo di utilizzare librerie client in grado di gestire occasionali reimpostazioni della connessione.
Cloud Run stampa un messaggio di log ogni volta che un'attività inizia e termina la migrazione.
Inoltre, se vuoi monitorare o gestire gli eventi di manutenzione in un modo specifico,
puoi intercettare l'indicatore 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 Go è una funzione che rileva questi indicatori 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) } }() }
Job GPU a lunga esecuzione
In alcuni casi, ad esempio per job GPU di lunga durata, gli eventi di manutenzione potrebbero comportare il prerilascio o la terminazione delle istanze senza migrazione live.
Per gestire questi eventi in modo controllato, un'opzione è intercettare il segnale SIGTERM, che Cloud Run invia 10 secondi prima della terminazione dell'attività, per salvare l'avanzamento scrivendo i checkpoint finali e salvando lo stato nell'archiviazione permanente. Per maggiori dettagli, consulta Progetta job GPU resilienti a lunga esecuzione.
Tuttavia, tieni presente che hai circa 10 secondi dopo SIGTERM prima che l'attività venga terminata.
Questo tempo non è sufficiente per scrivere un checkpoint di un modello di grandi dimensioni. Tratta il gestore SIGTERM come un flush best-effort solo di stati di piccole dimensioni e affidati al checkpoint periodico come protezione principale. Scegli l'intervallo di checkpoint in base alla quantità di lavoro che puoi permetterti di perdere.
Poiché le attività GPU non vengono migrate live, è prevedibile che un'attività configurata con un timeout di più ore venga interrotta almeno una volta prima del completamento. Il timeout dell'attività è un valore massimo, non una garanzia di esecuzione ininterrotta.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare i job Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Cloud Run Developer (
roles/run.developer) sul job Cloud Run - Utente dell'account di servizio (
roles/iam.serviceAccountUser) sull'identità di servizio
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 le APIGoogle Cloud , 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 delle attività per un job Cloud Run:
Console
Nella console Google Cloud , vai alla pagina Cloud Run:
Seleziona Job dal menu di navigazione di Cloud Run:
Se stai creando un nuovo job, 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 poi fai clic su Visualizza e modifica la configurazione del job.
Fai clic su Container, connessioni, sicurezza per espandere la pagina delle proprietà del job.
Nel campo Timeout attività, specifica la durata massima delle 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
605e seleziona secondo come Unità di tempo.Fai clic su Crea o Aggiorna.
gcloud
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 esempious-docker.pkg.dev/cloudrun/container/job:latest.- TIMEOUT con la durata massima delle attività del job,
specificando la quantità di tempo e le unità: ad esempio,
10m5scorrisponde a dieci minuti e cinque secondi.
Per un job che stai aggiornando:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
Se stai creando un nuovo job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:
gcloud run jobs describe JOB --format export > job.yaml
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 esempious-docker.pkg.dev/cloudrun/container/job:latest.- TIMEOUT con la durata massima delle attività del job, specificando il periodo 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 variabili di ambiente o limiti di memoria.
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 risorsagoogle_cloud_run_v2_job nella configurazione Terraform:Visualizza le impostazioni di timeout delle attività
Per visualizzare le impostazioni attuali del timeout delle attività per il tuo job Cloud Run, utilizza la console Google Cloud o Google Cloud CLI:
Console
Nella console Google Cloud , vai alla pagina dei job Cloud Run:
Fai clic sul job per aprire la pagina Dettagli job.
Fai clic su Visualizza e modifica la configurazione del job.
Individua l'impostazione del timeout dell'attività nei dettagli di configurazione.
gcloud
Esegui questo comando:
gcloud run jobs describe JOB
Individua l'impostazione del timeout dell'attività nella configurazione restituita.