Este documento descreve como limitar os tempos de execução de tarefas e executáveis definindo tempos limite. Como alternativa, se você quiser que um executável termine assim que todos os outros executáveis na tarefa forem concluídos, use um executável em segundo plano em vez disso.
Um tempo limite especifica a quantidade de tempo que uma tarefa ou um executável tem permissão para ser executado. O Batch não permite que os jobs sejam executados por mais de 14 dias e não define tempos limite padrão para tarefas e executáveis individuais. Consequentemente, uma tarefa ou executável individual pode ser executada por até 14 dias antes de falhar automaticamente. No entanto, se as tarefas e os executáveis não forem projetados para serem executados por tanto tempo, essa configuração poderá causar custos e atrasos inesperados. Para evitar tempos de execução excessivos, é possível definir tempos limite para tarefas e executáveis.
Antes de começar
- Se você nunca usou o Batch, leia Começar a usar o Batch e ative o serviço concluindo os pré-requisitos para projetos e usuários.
-
Para receber as permissões necessárias para criar um job, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor de jobs em lote (
roles/batch.jobsEditor
) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que por padrão é a conta de serviço padrão do Compute Engine
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
-
Editor de jobs em lote (
Definir limites de tempo
É possível definir tempos limite para executáveis, tarefas ou ambos. O tempo limite de um executável especifica o tempo máximo de execução dele. O tempo limite de uma tarefa especifica o tempo máximo de execução dela, que é a soma de todos os tempos de execução individuais dos executáveis. Por exemplo, se uma tarefa tiver três executáveis que são executados ao mesmo tempo por um minuto, o tempo de execução da tarefa será de três minutos, não um minuto.
Se você definir tempos limite sobrepostos, como um tempo limite para um executável e a tarefa do executável, apenas um tempo limite precisa ser excedido para acionar a falha automática. Por exemplo, suponha que você defina o tempo limite de uma tarefa como 60 segundos e o tempo limite de cada executável dessa tarefa como 120 segundos. Em seguida, essa tarefa de exemplo e todos os executáveis dela falham quando a soma dos tempos de execução dos executáveis excede 60 segundos, e é impossível acionar os tempos limite de 120 segundos.
Para escolher o tempo limite adequado para definir as tarefas e os executáveis do seu job, analise os registros de jobs semelhantes que você executou anteriormente para determinar o tempo de execução típico das tarefas e dos executáveis para cargas de trabalho semelhantes.
Definir tempo limite para uma tarefa
Use a Google Cloud CLI ou a API REST para criar um job que inclua o campo maxRunDuration
no objeto taskSpec
do arquivo JSON:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Substitua TIMEOUT
pelo número máximo de segundos ou
seções fracionárias que você quer permitir que a tarefa seja executada. Por exemplo, 255s
.
Um job que define um tempo limite de 255 segundos para uma tarefa teria um arquivo de configuração JSON semelhante a este:
{
"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 o tempo limite de uma tarefa for excedido, ela vai falhar automaticamente, e o tempo limite excedido será indicado pelo código de saída 50005
nos eventos e registros de status do job. Para mais informações sobre tempos limite excedidos, consulte a
documentação de solução de problemas para o código de saída 50005.
Definir tempo limite para um executável
Use a Google Cloud CLI ou a API REST para criar um job que inclua o campo timeout
no objeto runnable
do arquivo JSON:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Substitua TIMEOUT
pelo número máximo de segundos ou
seções fracionárias que você quer permitir que o executável seja executado. Por exemplo, 3.5s
.
Um job que define um tempo limite de 3,5 segundos para um executável teria um arquivo de configuração JSON semelhante a este:
{
"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 o tempo limite de um executável for excedido, ele vai falhar automaticamente, e o tempo limite excedido será indicado pelo código de saída 50005
nos eventos e registros de status do job. Para mais informações sobre tempos limite excedidos, consulte a
documentação de solução de problemas para o código de saída 50005.
A seguir
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Ver jobs e tarefas.
- Saiba mais sobre outras opções de criação de jobs.
- Saiba como analisar um job usando registros.