Questo documento descrive come limitare i tempi di esecuzione di attività ed elementi eseguibili impostando i timeout.
Un timeout specifica per quanto tempo è consentita l'esecuzione di un'attività o di un elemento eseguibile. La modalità batch non consente l'esecuzione dei job per più di 14 giorni e non imposta timeout predefiniti per attività singole ed eseguibili. Di conseguenza, una singola attività o un elemento eseguibile possono essere eseguiti per un massimo di 14 giorni prima dell'errore automatico. Tuttavia, se le tue attività e gli elementi eseguibili non sono pensati per essere eseguiti per così tanto tempo, questa configurazione potrebbe causare costi e ritardi imprevisti. Per evitare tempi di esecuzione eccessivi, puoi impostare timeout per attività ed eseguibili.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la Guida introduttiva all'utilizzo di Batch e abilita Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Editor job batch (
roles/batch.jobsEditor
) sul progetto -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Editor job batch (
Imposta timeout
Puoi impostare i timeout per gli elementi eseguibili, le attività o entrambi. Il timeout per un elemento eseguibile specifica il tempo di esecuzione massimo per l'elemento eseguibile. Il timeout per un'attività specifica il tempo di esecuzione massimo per quell'attività, ovvero la somma di tutti i singoli tempi di esecuzione degli elementi eseguibili. Ad esempio, se un'attività ha tre elementi eseguibili che vengono eseguiti tutti contemporaneamente per 1 minuto, il tempo di esecuzione dell'attività è di 3 minuti e non di 1 minuto.
Se imposti timeout sovrapposti, ad esempio un timeout sia per un'attività eseguibile sia per l'attività dell'elemento eseguibile, deve essere superato un solo timeout per attivare l'errore automatico. Ad esempio, supponi di impostare il timeout di un'attività su 60 secondi e il timeout di ogni elemento eseguibile di quell'attività su 120 secondi. Poi, questa attività di esempio e tutti i suoi elementi eseguibili non riescono quando la somma dei tempi di esecuzione degli elementi eseguibili supera i 60 secondi ed è impossibile attivare i timeout di 120 secondi.
Per scegliere il timeout appropriato da impostare per le attività e gli elementi eseguibili del job, analizza i log di job simili che hai eseguito in precedenza per determinare il tempo di esecuzione tipico per le attività e gli elementi eseguibili per carichi di lavoro simili.
Impostare il timeout per un'attività
Usa Google Cloud CLI o l'API REST per creare un job che includa il campo maxRunDuration
nell'oggetto taskSpec
del file JSON:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Sostituisci TIMEOUT
con il numero massimo di secondi o
sezioni frazionarie per cui vuoi consentire l'esecuzione dell'attività. Ad esempio, 255s
.
Un job che imposta un timeout di 255 secondi per un'attività avrà un file di configurazione JSON simile al seguente:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"maxRunDuration": "255s"
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Se il timeout di un'attività viene superato, l'attività non riesce automaticamente e il timeout superato viene indicato dal codice di uscita 50005
negli eventi di stato e nei log del job. Per ulteriori informazioni sui timeout superati, consulta la documentazione per la risoluzione dei problemi relativi al codice di uscita 50005.
Imposta il timeout per un elemento eseguibile
Usa Google Cloud CLI o l'API REST per creare un job che includa il campo timeout
nell'oggetto runnable
del file JSON:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Sostituisci TIMEOUT
con il numero massimo di secondi o
sezioni frazionarie per cui vuoi consentire l'esecuzione dell'elemento eseguibile. Ad esempio,
3.5s
.
Un job che imposta un timeout di 3,5 secondi per un elemento eseguibile avrà un file di configurazione JSON simile al seguente:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
"timeout": "3.5s"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Se il timeout di un elemento eseguibile viene superato, l'elemento eseguibile fallisce automaticamente e il timeout di superamento è indicato dal codice di uscita 50005
negli eventi di stato e nei log del job. Per ulteriori informazioni sui timeout superati, consulta la documentazione per la risoluzione dei problemi relativi al codice di uscita 50005.
Passaggi successivi
- In caso di problemi durante la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Visualizzare lavori e attività.
- Scopri di più sulle opzioni per la creazione di job.
- Scopri come analizzare un job utilizzando i log.