제한 시간을 사용하여 태스크 및 실행 가능 항목의 실행 시간 제한

이 문서에서는 제한 시간을 설정하여 태스크 및 실행 가능 항목의 실행 시간을 제한하는 방법을 설명합니다.

제한 시간은 태스크 또는 실행 가능 항목을 실행할 수 있는 시간을 지정합니다. Batch에서는 작업을 14일 이상 실행하는 것을 허용하지 않으며 개별 태스크 및 실행 가능 항목의 기본 제한 시간을 설정하지 않습니다. 따라서 개별 태스크 또는 실행 가능 항목이 자동 실패 전까지 최대 14일 동안 실행될 수 있습니다. 하지만 태스크와 실행 가능 항목이 이렇게 오랫동안 실행되지 않을 경우 이 구성으로 인해 예상치 못한 비용과 지연이 발생할 수 있습니다. 과도한 실행 시간을 방지하기 위해 태스크 및 실행 가능 항목에 제한 시간을 설정할 수 있습니다.

시작하기 전에

시간 초과 설정

실행 가능 항목, 태스크 또는 둘 다에 제한 시간을 설정할 수 있습니다. 실행 가능 항목의 제한 시간은 해당 실행 가능 항목의 최대 실행 시간을 지정합니다. 태스크의 제한 시간은 해당 태스크의 최대 실행 시간을 지정하며, 이는 실행 가능 항목의 모든 개별 실행 시간의 합계입니다. 예를 들어 태스크에 1분 동안 동시에 실행되는 3개의 실행 가능 항목이 있는 경우 태스크 실행 시간은 1분이 아니라 3분입니다.

실행 가능 항목과 실행 가능 항목의 태스크 모두에 대한 제한 시간과 같이 겹치는 제한 시간을 설정한 경우 자동 실패를 트리거하려면 제한 시간을 하나만 초과하면 됩니다. 예를 들어 태스크 제한 시간을 60초로 설정하고 해당 태스크의 각 실행 가능 항목 제한 시간을 120초로 설정했다고 가정해 보겠습니다. 그런 다음 실행 가능 항목의 실행 시간 합계가 60초를 초과하면 이 예시 태스크와 모든 실행 가능 항목이 실패하고 120초 제한 시간을 트리거할 수 없습니다.

작업의 태스크와 실행 가능 항목에 설정할 적절한 제한 시간을 선택하려면 이전에 실행한 유사한 작업의 로그를 분석하여 유사한 워크로드에 대한 태스크와 실행 가능 항목의 일반적인 실행 시간을 확인합니다.

태스크 제한 시간 설정

Google Cloud CLI 또는 REST API를 사용하여 JSON 파일의 taskSpec 객체에서 maxRunDuration 필드를 포함하는 작업을 만듭니다.

{
    "taskGroups": [
      {
        "taskSpec": {
          ...
          "maxRunDuration": "TIMEOUT"
        }
      }
    ]
}

TIMEOUT을 태스크 실행을 허용할 최대 정수 또는 소수 값(초)으로 바꿉니다. 예를 들면 255s입니다.

태스크에 대해 255초 제한 시간을 설정하는 작업에는 다음과 유사한 JSON 구성 파일이 포함됩니다.

{
    "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"
    }
}

태스크의 제한 시간이 초과되면 태스크가 자동으로 실패하고 초과된 제한 시간은 작업의 상태 이벤트 및 로그에 종료 코드 50005로 표시됩니다. 초과된 제한 시간에 대한 자세한 내용은 종료 코드 50005 문제 해결 문서를 참조하세요.

실행 가능 항목 제한 시간 설정

Google Cloud CLI 또는 REST API를 사용하여 JSON 파일의 runnable 객체에서 timeout 필드를 포함하는 작업을 만듭니다.

{
    "taskGroups": [
      {
        "taskSpec": {
          "runnables": [
            {
              ...
              "timeout": "TIMEOUT"
            }
          ]
        }
      }
    ]
}

TIMEOUT을 실행 가능 항목 실행을 허용할 최대 정수 또는 소수 값(초)으로 바꿉니다. 예를 들면 3.5s입니다.

실행 가능 항목에 대해 3.5초 제한 시간을 설정하는 작업에는 다음과 유사한 JSON 구성 파일이 포함됩니다.

{
    "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"
    }
}

실행 가능 항목의 제한 시간이 초과되면 실행 가능 항목이 자동으로 실패하고 초과된 제한 시간은 작업의 상태 이벤트 및 로그에 종료 코드 50005로 표시됩니다. 초과된 제한 시간에 대한 자세한 내용은 종료 코드 50005 문제 해결 문서를 참조하세요.

다음 단계