Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При добавлении, планировании или выполнении заданий и задач пакетной службы Azure могут возникать различные ошибки. Ошибки, возникающие при добавлении заданий и задач, легко обнаружить. API, командная строка или пользовательский интерфейс обычно возвращает любые сбои немедленно. В этой статье описывается, как проверять и обрабатывать ошибки, возникающие после отправки заданий и задач.
Сбои задания
Задание — это группа из одной или нескольких задач, которые указывают командные строки для выполнения. При добавлении задания можно указать следующие необязательные параметры. Эти параметры определяют, как может произойти сбой работы.
JobConstraints. При необходимости можно использовать
maxWallClockTimeсвойство, чтобы задать максимальное время, когда задание может быть активным или запущенным. Если задание превышаетmaxWallClockTime, задание завершается, и свойствуterminateReasonприсваивается значениеMaxWallClockTimeExpiryв JobExecutionInformation.JobPreparationTask. При необходимости можно указать задачу подготовки для запуска на каждом вычислительном узле, предназначенном для выполнения задачи. Узел запускает задачу подготовки задания до первого запуска задачи для задания. Если задача подготовки задания терпит неудачу, то сама задача не выполняется и задание не завершается.
JobReleaseTask. При необходимости можно указать задачу завершения задания для тех заданий, у которых есть задача подготовительного этапа. Когда задание завершается, задача выпуска задания выполняется на каждом узле пула, на котором выполняется задача подготовки задания. Если задача выпуска задания завершается сбоем, задание всё равно перемещается в
completedсостояние.
На портале Azure эти параметры можно задать в разделах Диспетчер заданий, Задачи подготовки и выпуска и Дополнительно экрана Добавление задания.
Свойства задания
Проверьте следующие свойства задания в JobExecutionInformation для ошибок:
Свойство
terminateReasonуказывает,MaxWallClockTimeExpiryпревышает ли задание указанноеmaxWallClockTimeв ограничениях задания и, следовательно, задание завершено. Это свойство также можно задать наtaskFailed, если атрибутonTaskFailureзадания установлен наperformExitOptionsJobAction, и задача завершается сбоем с условием выхода, указывающимjobActionравноеterminatejob.Свойство JobSchedulingError задано, если произошла ошибка планирования.
Задачи по подготовке к работе
Экземпляр задачи подготовки задания выполняется на каждом вычислительном узле первый раз, когда узел запускает задачу для задания. Задача подготовки заданий может быть представлена как шаблон задачи, а число экземпляров исполнения может достигать количества узлов в пуле. Проверьте экземпляры задач подготовки работы, чтобы определить, были ли ошибки.
Вы можете использовать API Job - List Preparation and Release Task Status для перечисления состояния выполнения всех экземпляров задач подготовки и выпуска для указанного задания. Как и в других задачах, JobPreparationTaskExecutionInformation доступен с такими свойствами, как failureInfo, exitCodeи result.
При выполнении задачи подготовки задания задача, запускающая эту задачу, перемещается в состояние taskStatepreparing. Если задача подготовки задания завершается сбоем, триггерная задача возвращается к состоянию active и не выполняется.
Если задача подготовки задания завершается сбоем, задача запуска задания не выполняется. Задание не завершено и зависло. Если нет других задач, которые могут быть запланированы, пул не будет использоваться.
Задачи выпуска заданий
Экземпляр задачи выпуска задания выполняется при завершении задания на каждом узле, где выполнялась задача подготовки задания. Проверьте экземпляры задач выпуска задания, чтобы определить, были ли ошибки.
Вы можете использовать API Job - List Preparation and Release Task Status для перечисления состояния выполнения всех экземпляров задач подготовки и выпуска для указанного задания. Как и в других задачах, JobReleaseTaskExecutionInformation доступен с такими свойствами, как failureInfo, exitCodeи result.
Если сбой одной или нескольких задач освобождения, задание все равно завершается и перемещается в состояние completed.
Сбои задач
Задачи могут завершиться ошибкой по следующим причинам:
- Командная строка задачи завершается ошибкой и возвращает ненулевой код выхода.
- Один или несколько
resourceFiles, указанных для задачи, не загружаются. - Один или несколько
outputFiles, указанные для задачи, не загружаются. - Затраченное время на задачу превышает указанное в
maxWallClockTimeсвойство .
Во всех случаях проверьте следующие свойства ошибок и сведения об ошибках:
Свойство TaskExecutionInformation содержит несколько свойств, которые предоставляют сведения об ошибке. TaskExecutionResult указывает, не удалось ли выполнить задачу по какой-либо причине и
exitCodefailureInfoпредоставить дополнительные сведения о сбое.Задача всегда перемещается в
completedTaskState, выполняется ли она успешно или завершилась сбоем.
Следует учесть влияние сбоев задач на выполнение рабочих процессов и на зависимости между задачами. Можно указать ExitConditions , чтобы настроить действия для зависимостей и задания.
- DependencyAction определяет, следует ли блокировать или запускать задачи, зависящие от неудачной задачи.
- JobAction контролирует, приводит ли неудавшаяся задача к отключению, завершению работы или оставляет работу без изменений.
Командная строка задачи
Командные строки задач не выполняются под оболочкой на вычислительных узлах, поэтому они не могут использовать собственные функции оболочки, такие как расширение переменной среды. Чтобы воспользоваться такими функциями, необходимо вызвать оболочку в командной строке. Дополнительные сведения см. в разделе "Расширение командной строки переменных среды".
Выходные данные командной строки задачи записываются в файлыstderr.txt и stdout.txt . Приложение может также записывать в лог файлы, специфичные для приложения. Обязательно реализуйте комплексную проверку ошибок для приложения, чтобы быстро обнаруживать и диагностировать проблемы.
Журналы задач
Если узел пула, выполняющий задачу, по-прежнему существует, вы можете получить и просмотреть файлы журнала задач. Несколько API разрешают перечисление и получение файлов задач, таких как File — Get From Task. Вы также можете просматривать файлы журналов для задачи или узла с помощью портала Azure.
В верхней части страницы обзора узла выберите "Отправить пакетные журналы".
На странице Загрузка журналов пакетов выберите контейнер хранилища, выберите контейнер хранилища Azure для загрузки, а затем нажмите Начать загрузку.
Вы можете просматривать, открывать или скачивать журналы на странице контейнера хранилища.
Выходные файлы
Так как пулы пакетной обработки и узлы пула часто являются временными, в них узлы постоянно добавляются и удаляются, рекомендуется сохранять файлы журналов во время выполнения задачи. Выходные файлы задач — это удобный способ сохранения файлов журналов в службе хранилища Azure. Для получения дополнительной информации см. Сохранение данных задачи в Azure Storage с использованием API службы Batch.
При каждой отправке файла Batch записывает два файла журнала на вычислительный узел fileuploadout.txt и fileuploaderr.txt. Эти файлы журнала можно просмотреть, чтобы узнать больше о конкретном сбое. Если отправка файла не была выполнена, например из-за того, что сама задача не могла выполниться, эти файлы журнала не существуют.
Дальнейшие шаги
- Узнайте больше о заданиях пакетной обработки и задачах подготовки и выполнения заданий.
- Узнайте об ошибках пула Batch-сервиса и узлов.