Поделиться через


пакетная служба Azure ошибок заданий и задач

При добавлении, планировании или выполнении пакетная служба Azure заданий и задач могут возникать различные ошибки. Легко обнаружить ошибки, возникающие при добавлении заданий и задач. API, командная строка или пользовательский интерфейс обычно немедленно возвращает все сбои. В этой статье описывается, как проверка и обрабатывать ошибки, возникающие после отправки заданий и задач.

Сбои задания

Задание — это группа из одной или нескольких задач, которые указывают командные строки для запуска. При добавлении задания можно указать следующие необязательные параметры. Эти параметры влияют на то, как задание может завершиться сбоем.

  • JobConstraints. При необходимости можно использовать свойство , maxWallClockTime чтобы задать максимальное время, в течение которого задание может быть активным или запущенным. Если задание превышает maxWallClockTimeзначение , задание завершается со свойством terminateReason , заданным MaxWallClockTimeExpiry в JobExecutionInformation.

  • JobPreparationTask. При необходимости можно указать задачу подготовки задания, выполняемую на каждом вычислительном узле, запланированном для выполнения задачи задания. Узел запускает задачу подготовки задания до первого запуска задачи для задания. Если задача подготовки задания завершается сбоем, задача не выполняется и задание не завершается.

  • JobReleaseTask. При необходимости можно указать задачу выпуска задания для заданий, имеющих задачу подготовки задания. Когда задание завершается, задача выпуска задания выполняется на каждом узле пула, на котором выполнялась задача подготовки задания. Если задача выпуска задания завершается сбоем, задание по-прежнему переходит в completed состояние .

В портал Azure эти параметры можно задать в разделах Диспетчер заданий, задач подготовки и выпуска и Дополнительно на экране Задания пакетного добавления.

Свойства задания

Проверьте следующие свойства задания в JobExecutionInformation на наличие ошибок:

  • Свойство terminateReason указывает, MaxWallClockTimeExpiry превысило ли задание указанное maxWallClockTime в задании ограничение и, следовательно, оно было завершено. Этому свойству также можно присвоить значение taskFailed , если атрибуту задания onTaskFailure присвоено значение performExitOptionsJobAction, а задача завершается сбоем с условием выхода, указывающим jobAction значение terminatejob.

  • Свойство JobSchedulingError устанавливается, если произошла ошибка планирования.

Задачи подготовки задания

Экземпляр задачи подготовки задания выполняется на каждом вычислительном узле при первом запуске задачи для задания. Задачу подготовки задания можно рассматривать как шаблон задачи с несколькими запущенными экземплярами, вплоть до количества узлов в пуле. Проверьте экземпляры задачи подготовки задания, чтобы определить, были ли ошибки.

С помощью API "Задание — подготовка списка" и "Состояние задачи выпуска " можно получить список состояний выполнения всех экземпляров задач подготовки и выпуска заданий для указанного задания. Как и в случае с другими задачами, JobPreparationTaskExecutionInformation доступен с такими свойствами, как failureInfo, exitCodeи result.

При выполнении задачи подготовки задания задача, активировающая задачу подготовки задания, перемещается в состояние taskStatepreparing. Если задача подготовки задания завершается сбоем, актививная задача возвращается в active состояние и не выполняется.

Если задача подготовки задания завершается сбоем, актививная задача задания не выполняется. Задание не завершается и зависает. Если нет других заданий с задачами, которые можно запланировать, пул может не использоваться.

Задачи отключения задания

Экземпляр задачи выпуска задания выполняется при завершении задания на каждом узле, на котором запущена задача подготовки задания. Проверьте экземпляры задачи выпуска задания, чтобы определить, были ли ошибки.

С помощью API "Задание — подготовка списка" и "Состояние задачи выпуска " можно получить список состояний выполнения всех экземпляров задач подготовки и выпуска заданий для указанного задания. Как и в случае с другими задачами, JobReleaseTaskExecutionInformation доступен с такими свойствами, как failureInfo, exitCodeи result.

Если одна или несколько задач выпуска задания завершаются сбоем, задание по-прежнему завершается и переходит в completed состояние .

Сбои задач

Выполнение заданий может завершиться сбоем по следующим причинам:

  • Командная строка задачи завершается сбоем и возвращается с ненулевым кодом выхода.
  • Один или несколько resourceFiles , указанных для задачи, не скачиваются.
  • Один или несколько outputFiles , указанных для задачи, не передаются.
  • Затраченное время задачи превышает maxWallClockTime свойство, указанное в TaskConstraints.

Во всех случаях проверка следующие свойства для ошибок и сведения об ошибках:

  • Свойство TaskExecutionInformation имеет несколько свойств, которые предоставляют сведения об ошибке. TaskExecutionResult указывает, не завершилась ли задача по какой-либо причине, и exitCodefailureInfo предоставляет дополнительные сведения о сбое.

  • Задача всегда перемещается в completedTaskState, независимо от того, была ли она успешной или неудачной.

Учитывайте влияние сбоев задач на задание и на любые зависимости задач. Вы можете указать ExitConditions , чтобы настроить действия для зависимостей и задания.

  • DependencyAction определяет, следует ли блокировать или запускать задачи, зависящие от неудачной задачи.
  • JobAction определяет, будет ли задача, завершаемая сбоем, отключаться или не изменяться.

Командные строки задачи

Командные строки задач не выполняются в оболочке на вычислительных узлах, поэтому они не могут изначально использовать функции оболочки, такие как расширение переменных среды. Чтобы воспользоваться этими функциями, следует вызвать оболочку в командной строке. Дополнительные сведения см. в разделе Расширение переменных среды с помощью командной строки.

Выходные данные командной строки задачи записываются в файлыstderr.txt и stdout.txt . Приложение также может выполнять запись в файлы журналов, относящиеся к конкретному приложению. Обязательно реализуйте комплексную проверку ошибок для приложения, чтобы быстро обнаруживать и диагностировать проблемы.

Журналы задач

Если узел пула, выполняющий задачу, по-прежнему существует, можно получить и просмотреть файлы журнала задач. Несколько API позволяют выводить и получать файлы задач, например Файл — получение от задачи. Вы также можете выводить список и просматривать файлы журналов для задачи или узла с помощью портал Azure.

  1. В верхней части страницы Обзор для узла выберите Отправить пакетные журналы.

    Снимок экрана: страница обзора узла с выделенным элементом

  2. На странице Отправка журналов пакетной службы выберите Выбрать контейнер хранилища, выберите контейнер службы хранилища Azure для отправки, а затем нажмите кнопку Начать отправку.

    Снимок экрана: страница

  3. Вы можете просматривать, открывать или скачивать журналы на странице контейнера хранилища.

    Снимок экрана: журналы задач в контейнере хранилища.

выходные файлы

Так как пулы пакетной службы и узлы пулов часто являются временными, а узлы постоянно добавляются и удаляются, рекомендуется сохранять файлы журналов при выполнении задания. Выходные файлы задач — удобный способ сохранения файлов журнала в службе хранилища Microsoft Azure. Дополнительные сведения можно найти в разделе Сохранение данных задачи в службе хранилища Azure с помощью API пакетной службы.

При каждой отправке файла пакетная служба записывает два файла журнала в вычислительный узел ,fileuploadout.txt и fileuploaderr.txt. Для получения дополнительных сведений о конкретной ошибке можно проанализировать файлы журнала. Если отправка файла не была предпринята, например из-за того, что не удалось выполнить саму задачу, эти файлы журнала не существуют.

Дальнейшие действия