Limitar os tempos de execução de tarefas e executáveis usando timeouts

Este documento descreve como limitar os tempos de execução de tarefas e executáveis definindo timeouts.

Um tempo limite especifica a quantidade de tempo que uma tarefa ou executável é permitida. para ser executado. O lote não permite que jobs sejam executados por mais de 14 dias e não define tempos limite padrão para tarefas individuais e executáveis. Consequentemente, uma tarefa individual ou executável pode ser executada enquanto 14 dias antes da falha automática. No entanto, se as tarefas e os arquivos executáveis não seja executada por esse período, essa configuração pode causar custos inesperados e atrasos. Para evitar tempos de execução excessivos, defina tempos limite para tarefas e executáveis.

Antes de começar

  1. Se você nunca usou o Batch, consulte Começar a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e usuários.
  2. Para ter as permissões necessárias para criar um job, peça ao administrador para conceder a você os seguintes papéis do IAM:

    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.

Definir limites de tempo

É possível definir tempos limite para runnables, tarefas ou ambos. O tempo limite de um executável especifica o tempo máximo de execução para esse executável. 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 tem três executáveis que são executados ao mesmo tempo para 1 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 da tarefa executável, então apenas um tempo limite precisa ser excedido para acionar falha automática. Por exemplo, suponha que você defina o tempo limite de uma tarefa como 60 segundos e o tempo limite de cada um dos executáveis dessa tarefa para 120 segundos. Então, essa tarefa de exemplo e todos os executáveis falham quando o a soma dos tempos de execução dos executáveis excede 60 segundos, e será impossível acionar os tempos limite de 120 segundos.

Para escolher o tempo limite adequado para as tarefas e os executáveis do job, analise os registros de jobs semelhantes que você já executou para determinar o tempo de execução típico das tarefas e dos executáveis para cargas de trabalho semelhantes.

Definir o tempo limite de uma tarefa

Use a Google Cloud CLI ou a API REST para criar um job que inclui 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 para as quais você deseja 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 ao seguinte:

{
    "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 falhará automaticamente, e o tempo limite excedido será indicado pelo código de saída 50005 nos eventos de status e nos registros do job. Para mais informações sobre o tempo limite excedido, consulte a documentação de solução de problemas do código de saída 50005.

Definir o tempo limite para um executável

Use a CLI do Google Cloud 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 JSON arquivo de configuração semelhante ao seguinte:

{
    "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 e o tempo limite excedido é indicado pelo código de saída 50005 da registros e eventos de status. Para mais informações sobre o tempo limite excedido, consulte a documentação de solução de problemas do código de saída 50005.

A seguir