Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Иногда может потребоваться обрабатывать сбои задач и приложений в решении пакетной службы Azure. В этой статье объясняются различные типы пакетных ошибок и способы устранения распространенных проблем.
Коды ошибок
Некоторые общие типы ошибок, которые могут встречаться в Batch, включают:
- Сетевые сбои для запросов, которые никогда не достигли службы Batch, или когда ответ от службы Batch не достиг клиента вовремя.
- Внутренние ошибки сервера. Эти ошибки имеют стандартный статусный код HTTP-ответа.
- Ошибки, связанные с ограничениями пропускной способности. Эти ошибки включают
429или503HTTP-ответы с кодом состояния и заголовкомRetry-after. -
4xxТакие ошибки, какAlreadyExistsиInvalidOperation. Эти ошибки указывают на то, что ресурс находится в неправильном состоянии для перехода состояния.
Подробные сведения о конкретных кодах ошибок см. в разделе Статус пакета и коды ошибок. Эта ссылка содержит коды ошибок для REST API, пакетной службы, а также задач и планирования работ.
Сбои приложений
Во время выполнения приложение может создавать диагностические выходные данные. Эти выходные данные можно использовать для устранения неполадок. Пакетная служба записывает стандартные выходные данные и стандартные выходные данные ошибок в файлыstdout.txt и stderr.txt в каталоге задач на вычислительном узле. Дополнительные сведения см. в разделе «Файлы и каталоги в Batch».
Чтобы скачать эти выходные файлы, используйте портал Azure или один из пакетов для Batch SDK. Например, чтобы получить файлы для устранения неполадок, используйте ComputeNode.GetNodeFile и CloudTask.GetNodeFile в библиотеке Batch .NET.
Ошибки задачи
Ошибки задач делятся на несколько категорий.
Ошибки предварительной обработки
Если задача не запускается, для задачи устанавливается ошибка предварительной обработки. Ошибки предварительной обработки могут возникать, если:
- Файлы ресурсов задачи перемещены.
- Учетная запись хранения больше не доступна.
- Произошла другая проблема, которая предотвратила успешное копирование файлов на узел.
Ошибки отправки файлов
Если файлы, указанные для задачи, не удалось отправить по какой-либо причине, для задачи устанавливается ошибка отправки файлов. Ошибки отправки файлов могут возникать, если:
- Токен общего доступа (SAS), предоставленный для доступа к Azure Storage, недействителен.
- Маркер SAS не предоставляет разрешения на запись.
- Учетная запись хранения больше не доступна.
- Другая проблема возникла, что предотвратила успешное копирование файлов с узла.
Ошибки приложений
Процесс, указанный командной строкой задачи, также может завершиться ошибкой. Дополнительные сведения см. в разделе Коды выхода задачи.
Для ошибок приложения настройте Batch для автоматической повторной попытки выполнения задачи до указанного количества раз.
Ошибки ограничения
Чтобы указать максимальную длительность выполнения для задания или задачи, задайте maxWallClockTime ограничение. Используйте этот параметр для завершения задач, которые не выполняются.
Когда задача превышает максимальное время:
- Задача помечается как завершенная.
- Коду выхода присвоено значение
0xC000013A. - Поле schedulingError помечено как
{ category:"ServerError", code="TaskEnded"}.
Коды выхода задачи
Когда задача выполняет процесс, Batch заполняет свойство кода завершения задачи возвращаемым кодом процесса. Если процесс возвращает ненулевой код выхода, служба пакетной обработки помечает задачу как неудачную.
Служба Batch не определяет код выхода задачи. Сам процесс или операционная система, в которой выполняется процесс, определяет код выхода.
Сбои или прерывания задач
Иногда выполнение задач может завершиться ошибкой или быть прерванными. Рассмотрим пример.
- Само приложение задачи может завершиться ошибкой.
- Узел, на котором выполняется задача, может перезагрузиться.
- Операция изменения размера может удалить узел из пула. Это действие может произойти, если политика размещения сделки пула удаляет узлы немедленно, не ожидая завершения задач.
Во всех случаях служба Batch может автоматически повторно ставить задачу в очередь для выполнения на другом узле.
Кроме того, может возникнуть прерывистая проблема, из-за которой задача перестанет отвечать или будет занимать слишком много времени на выполнение. Для задачи можно задать максимальный интервал выполнения. Если задача превышает интервал, пакетная служба прерывает выполнение приложения задачи.
Подключение к вычислительным узлам
Вы можете выполнять отладку и устранение неполадок, выполнив вход в вычислительный узел удаленно. С помощью портала Azure можно скачать файл протокола удаленного рабочего стола (RDP) для узлов Windows и получить сведения о подключении Secure Shell (SSH) для узлов Linux. Эти сведения также можно скачать с помощью API Пакетной службы .NET или Пакетной службы Python .
Чтобы подключиться к узлу через RDP или SSH, сначала создайте пользователя на узле. Используйте один из следующих методов:
- портал Azure.
- Пакетный REST API: adduser
- Пакетный API .NET: ComputeNode.CreateComputeNodeUser
- Модуль пакетной обработки на Python: add_user
При необходимости настройте или отключите доступ к вычислительным узлам.
Устранение неполадок проблемных узлов
Ваше клиентское приложение или служба Batch могут изучить метаданные задач с отказом, чтобы выявить проблемный узел. Каждый узел в пуле имеет уникальный идентификатор. Метаданные задачи включают узел, в котором выполняется задача. Найдя узел проблемы, попробуйте выполнить следующие методы, чтобы устранить сбой.
Перезагрузить узел
Перезапуск узла иногда устраняет скрытые проблемы, такие как зависшие или сбои процессов. Если ваш пул использует начальную задачу или ваше задание использует подготовительную задачу, в результате перезапуска узла выполняются эти задачи.
- REST API пакетной службы: перезагрузка
- API пакетной обработки .NET: ComputeNode.Reboot
Узел повторного воспроизведения
Повторное создание образа узла переустановит операционную систему. Запустите задачи и задачи подготовки заданий после повторного запуска.
- REST API пакетной службы: повторное создание образа
- API .NET для пакетной обработки: ComputeNode.Reimage
Удаление узла из пула
Иногда необходимо удалить узел из пула.
- REST API пакетной службы: удаление узлов
- API пакетной службы .NET: PoolOperations
Отключение планирования задач на узле
Отключение планирования задач на узле фактически переводит узел в автономный режим. Пакет больше не назначает заданий узлу. Однако узел продолжает работать в пуле. Затем можно дополнительно исследовать ошибки, не теряя данные неудачной задачи. Узел также не вызовет дополнительных сбоев в задачах.
Например, отключите планирование задач на узле. Затем войдите на узел удаленно. Изучите журналы событий и выполните другие действия по устранению неполадок. После решения проблем включите планирование задач еще раз, чтобы вернуть узел в режим "в сети".
- REST API пакетной обработки: включает планирование
- API пакетной обработки .NET: ComputeNode.EnableScheduling
Эти действия можно использовать для указания задач пакетной службы, выполняемых в данный момент на узле. Например, при отключении планирования задач с помощью Batch API .NET можно указать значение перечисления для DisableComputeNodeSchedulingOption. Можно выбрать:
- Завершение выполнения задач:
Terminate - Перезапуск задач для планирования на других узлах:
Requeue - Позвольте выполняющимся задачам завершиться перед выполнением действия:
TaskCompletion
Повторите попытку после ошибок
API пакетной службы уведомляют вас о сбоях. Вы можете повторить все API с помощью встроенного глобального обработчика повторных попыток. Рекомендуется использовать этот параметр.
После сбоя подождите несколько секунд, прежде чем повторить попытку. Если повторять слишком часто или слишком быстро, обработчик ограничивает запросы.