Azure Batch 작업 및 태스크 오류
Azure Batch 작업 및 태스크를 추가, 예약 또는 실행할 때 다양한 오류가 발생할 수 있습니다. 작업 및 태스크를 추가할 때 발생하는 오류를 검색하는 것은 간단합니다. API, 명령줄 또는 사용자 인터페이스는 일반적으로 모든 오류를 즉시 반환합니다. 이 문서에서는 작업 및 태스크가 제출된 후 발생하는 오류를 확인하고 처리하는 방법을 다룹니다.
작업 실패
작업은 실행할 명령줄을 지정하는 하나 이상의 태스크 그룹입니다. 작업을 추가할 때 다음과 같은 선택적 매개 변수를 지정할 수 있습니다. 이러한 매개 변수는 작업이 실패하는 방식에 영향을 미칩니다.
JobConstraints. 선택적으로
maxWallClockTime
속성을 사용하여 작업이 활성화되거나 실행될 수 있는 최대 시간을 설정할 수 있습니다. 작업이maxWallClockTime
을 초과하면 JobExecutionInformation에서terminateReason
속성 집합이MaxWallClockTimeExpiry
로 설정된 상태로 작업이 종료됩니다.JobPreparationTask. 선택적으로 작업 태스크를 실행하도록 예약된 각 컴퓨팅 노드에서 실행할 작업 준비 태스크를 지정할 수 있습니다. 노드는 작업에 대한 태스크를 처음 실행하기 전에 작업 준비 태스크를 실행합니다. 작업 준비 태스크가 실패하면 태스크가 실행되지 않고 작업이 완료되지 않습니다.
JobReleaseTask. 선택적으로 작업 준비 태스크가 있는 작업에 대해 작업 해제 태스크를 지정할 수 있습니다. 작업이 종료되면 작업 준비 태스크를 실행한 각 풀 노드에서 작업 해제 태스크가 실행됩니다. 작업 해제 태스크가 실패하면 작업은 여전히
completed
상태로 이동합니다.
Azure Portal에서는 작업 관리자, 준비 및 해제 태스크과 Batch 작업 추가 화면의 고급 섹션에서 이러한 매개 변수를 설정할 수 있습니다.
작업 속성
오류가 있는지 JobExecutionInformation에서 다음 작업 속성을 확인합니다.
작업이 작업 제약 조건에 지정된
maxWallClockTime
을 초과하여 작업이 종료된 경우terminateReason
속성은MaxWallClockTimeExpiry
를 나타냅니다. 작업의onTaskFailure
특성이performExitOptionsJobAction
으로 설정되고 태스크가terminatejob
의jobAction
을 지정하는 종료 조건으로 실패하는 경우 이 속성을taskFailed
로 설정할 수도 있습니다.예약 오류가 있는 경우 JobSchedulingError 속성이 설정됩니다.
작업 준비 태스크
작업 준비 태스크의 인스턴스는 노드가 작업에 대한 태스크를 처음 실행할 때 각 컴퓨팅 노드에서 실행됩니다. 작업 준비 태스크는 풀의 노드 수만큼 여러 인스턴스가 실행되는 태스크 템플릿으로 생각할 수 있습니다. 작업 준비 태스크 인스턴스를 확인하여 오류가 있는지 확인합니다.
작업 - 목록 준비 및 해제 태스크 상태 API를 사용하여 지정된 작업에 대한 모든 작업 준비 및 해제 태스크 인스턴스의 실행 상태를 나열할 수 있습니다. 다른 작업과 마찬가지로 JobPreparationTaskExecutionInformation은 failureInfo
, exitCode
및 result
와 같은 속성과 함께 사용할 수 있습니다.
작업 준비 태스크가 실행되면 작업 준비 태스크를 트리거한 태스크가 preparing
의 taskState로 이동합니다. 작업 준비 태스크가 실패하면 트리거하는 태스크가 active
상태로 돌아가고 실행되지 않습니다.
작업 준비 태스크가 실패하면 트리거하는 작업 태스크가 실행되지 않습니다. 작업이 완료되지 않고 중단되었습니다. 예약할 수 있는 태스크가 포함된 다른 작업이 없으면 풀이 사용되지 않을 수 있습니다.
작업 릴리스 태스크
작업 준비 태스크를 실행한 각 노드에서 작업이 종료될 때 작업 해제 태스크의 인스턴스가 실행됩니다. 작업 해제 태스크 인스턴스를 확인하여 오류가 있는지 확인합니다.
작업 - 목록 준비 및 해제 태스크 상태 API를 사용하여 지정된 작업에 대한 모든 작업 준비 및 해제 태스크 인스턴스의 실행 상태를 나열할 수 있습니다. 다른 작업과 마찬가지로 JobReleaseTaskExecutionInformation은 failureInfo
, exitCode
및 result
와 같은 속성과 함께 사용할 수 있습니다.
하나 이상의 작업 해제 태스크가 실패하면 작업은 여전히 종료되고 completed
상태로 이동합니다.
태스크 실패
다음과 같은 이유로 작업 태스크가 실패할 수 있습니다.
- 태스크 명령줄이 실패하고 0이 아닌 종료 코드로 반환됩니다.
- 태스크에 지정된 하나 이상의
resourceFiles
가 다운로드되지 않습니다. - 태스크에 지정된 하나 이상의
outputFiles
가 업로드되지 않습니다. - 태스크 경과 시간이 TaskConstraints에 지정된
maxWallClockTime
속성을 초과합니다.
모든 경우에 오류에 대한 다음 속성과 오류 정보를 확인합니다.
TaskExecutionInformation 속성에는 오류에 대한 정보를 제공하는 여러 속성이 있습니다. taskExecutionResult는 어떤 이유로든 태스크가 실패했는지 여부를 나타내며,
exitCode
및failureInfo
는 실패에 대한 추가 정보를 제공합니다.태스크는 성공 여부에 관계없이 항상 TaskState로 이동합니다
completed
.
태스크 실패가 작업 및 태스크 종속성에 미치는 영향을 고려합니다. ExitConditions를 지정하여 종속성 및 작업에 대한 작업을 구성할 수 있습니다.
- DependencyAction은 실패한 태스크에 의존하는 태스크를 차단할지 아니면 실행할지를 제어합니다.
- JobAction은 실패한 태스크로 인해 작업이 사용하지 않도록 설정, 종료 또는 변경되지 않는지 여부를 제어합니다.
태스크 명령줄
태스크 명령줄은 컴퓨팅 노드의 셸에서 실행되지 않으므로 환경 변수 확장과 같은 셸 기능을 기본적으로 사용할 수 없습니다. 이러한 기능을 활용하려면 명령줄에서 셸을 호출해야 합니다. 자세한 내용은 환경 변수의 명령줄 확장을 참조하세요.
태스크 명령줄 출력은 stderr.txt 및 stdout.txt 파일에 기록됩니다. 애플리케이션은 애플리케이션별 로그 파일에 쓸 수도 있습니다. 문제를 즉시 검색하고 진단하려면 애플리케이션에 대한 포괄적인 오류 검사를 구현해야 합니다.
작업 로그
태스크를 실행한 풀 노드가 여전히 존재하는 경우 태스크 로그 파일을 가져오고 볼 수 있습니다. 여러 API를 사용하면 파일 - 태스크에서 가져오기와 같은 태스크 파일을 나열하고 가져올 수 있습니다. Azure Portal을 사용하여 태스크나 노드에 대한 로그 파일을 나열하고 볼 수도 있습니다.
노드의 개요 페이지 상단에서 일괄 처리 로그 업로드를 선택합니다.
Batch 로그 업로드 페이지에서 스토리지 컨테이너 선택을 선택하고 업로드할 Azure Storage 컨테이너를 선택한 다음 업로드 시작을 선택합니다.
스토리지 컨테이너 페이지에서 로그를 보거나 열거나 다운로드할 수 있습니다.
출력 파일
Batch 풀과 풀 노드는 노드가 지속적으로 추가되고 삭제되는 임시 노드인 경우가 많기 때문에 작업이 실행될 때 로그 파일을 저장하는 것이 가장 좋습니다. 태스크 출력 파일은 로그 파일을 Azure Storage에 저장하는 편리한 방법입니다. 자세한 내용은 Batch 서비스 API를 사용하여 Azure Storage에 태스크 데이터 유지를 참조하세요.
파일이 업로드될 때마다 Batch는 두 개의 로그 파일(fileuploadout.txt 및 fileuploaderr.txt))을 컴퓨팅 노드에 기록합니다. 이러한 로그 파일을 검사하여 특정 오류에 대해 자세히 확인할 수 있습니다. 예를 들어, 태스크 자체를 실행할 수 없어서 파일 업로드가 시도되지 않은 경우 이러한 로그 파일은 존재하지 않습니다.
다음 단계
- Batch 작업 및 태스크과 작업 준비 및 해제 태스크에 대해 자세히 알아봅니다.
- Batch 풀 및 노드 오류에 대해 알아봅니다.