Udostępnij za pośrednictwem


Błędy zadań i zadań usługi Azure Batch

Podczas dodawania, planowania lub uruchamiania zadań i zadań usługi Azure Batch mogą wystąpić różne błędy. Wykrywanie błędów występujących podczas dodawania zadań i zadań jest proste. Interfejs API, wiersz polecenia lub interfejs użytkownika zwykle zwraca wszelkie błędy natychmiast. W tym artykule opisano sposób sprawdzania i obsługi błędów występujących po przesłaniu zadań i zadań.

Niepowodzenia zadań

Zadanie to grupa co najmniej jednego zadania, które określają wiersze polecenia do uruchomienia. Podczas dodawania zadania można określić następujące parametry opcjonalne. Te parametry wpływają na sposób, w jaki zadanie może zakończyć się niepowodzeniem.

  • Ograniczenia zadań. Opcjonalnie możesz użyć maxWallClockTime właściwości , aby ustawić maksymalny czas, przez jaki zadanie może być aktywne lub uruchomione. Jeśli zadanie przekroczy maxWallClockTimewartość , zadanie zostanie zakończone z właściwością terminateReason ustawioną na MaxWallClockTimeExpiry wartość w poleceniu JobExecutionInformation.

  • JobPreparationTask. Opcjonalnie można określić zadanie przygotowania zadania do uruchomienia w każdym węźle obliczeniowym zaplanowanym do uruchomienia zadania podrzędnego. Węzeł uruchamia zadanie przygotowania zadania przed pierwszym uruchomieniem zadania podrzędnego dla zadania. Jeśli zadanie przygotowania zadania zakończy się niepowodzeniem, zadanie nie zostanie uruchomione i zadanie nie zostanie ukończone.

  • JobReleaseTask. Opcjonalnie można określić zadanie zwolnienia zadania dla zadań, które mają zadanie przygotowania zadania. Po zakończeniu zadania zadanie zwolnienia zadania jest uruchamiane w każdym węźle puli, w ramach którego uruchomiono zadanie przygotowania zadania. Jeśli zadanie zwolnienia zadania zakończy się niepowodzeniem completed , zadanie nadal przechodzi do stanu.

W witrynie Azure Portal można ustawić te parametry w menedżerze zadań, zadaniach przygotowywania i wydawania oraz sekcjach Zaawansowane na ekranie Dodawanie zadania usługi Batch.

Właściwości zadania

Sprawdź następujące właściwości zadania w pliku JobExecutionInformation pod kątem błędów:

  • Właściwość terminateReason wskazuje MaxWallClockTimeExpiry , czy zadanie przekroczyło maxWallClockTime określone w ograniczeniach zadania i w związku z tym zadanie zostało zakończone. Tę właściwość można również ustawić na taskFailed , jeśli atrybut zadania onTaskFailure jest ustawiony na performExitOptionsJobAction, a zadanie kończy się niepowodzeniem z warunkiem zakończenia, który określa jobAction terminatejob.

  • Właściwość JobSchedulingError jest ustawiona, jeśli wystąpił błąd planowania.

Zadania podrzędne przygotowania zadania

Wystąpienie zadania podrzędnego przygotowania zadania jest uruchamiane w każdym węźle obliczeniowym przy pierwszym uruchomieniu zadania podrzędnego. Zadanie przygotowania zadania można traktować jako szablon zadania z uruchomionym wieloma wystąpieniami do liczby węzłów w puli. Sprawdź wystąpienia zadań przygotowania zadania, aby ustalić, czy wystąpiły błędy.

Interfejs API zadania podrzędnego przygotowania listy i stanu zadania wydania umożliwia wyświetlenie listy stanu wykonywania wszystkich wystąpień zadań przygotowywania i wydawania zadań podrzędnych dla określonego zadania. Podobnie jak w przypadku innych zadań, funkcja JobPreparationTaskExecutionInformation jest dostępna z właściwościami, takimi jak failureInfo, exitCodei result.

Gdy zadanie podrzędne przygotowania zadania zostanie uruchomione, zadanie, które wyzwoliło zadanie podrzędne przygotowania zadania, zostanie przeniesione do wartości taskState preparing. Jeśli zadanie przygotowania zadania zakończy się niepowodzeniem, zadanie wyzwalające zostanie przywrócone do active stanu i nie zostanie uruchomione.

Jeśli zadanie przygotowania zadania zakończy się niepowodzeniem, zadanie wyzwalania zadania nie zostanie uruchomione. Zadanie nie zostało ukończone i zostało zablokowane. Jeśli nie ma innych zadań z zadaniami, które można zaplanować, pula może nie być używana.

Zadania zwolnienia zadania

Wystąpienie zadania zwolnienia zadania jest uruchamiane po zakończeniu zadania w każdym węźle, w ramach którego uruchomiono zadanie przygotowania zadania. Sprawdź wystąpienia zadań wydania zadania, aby ustalić, czy wystąpiły błędy.

Interfejs API zadania podrzędnego przygotowania listy i stanu zadania wydania umożliwia wyświetlenie listy stanu wykonywania wszystkich wystąpień zadań przygotowywania i wydawania zadań podrzędnych dla określonego zadania. Podobnie jak w przypadku innych zadań, funkcja JobReleaseTaskExecutionInformation jest dostępna z właściwościami, takimi jak failureInfo, exitCodei result.

Jeśli co najmniej jedno zadanie zwolnienia zadania zakończy się niepowodzeniem completed , zadanie jest nadal przerywane i przechodzi do stanu.

Błędy zadań

Zadania podrzędne zadania mogą zakończyć się niepowodzeniem z następujących powodów:

  • Wiersz polecenia zadania kończy się niepowodzeniem i zwraca kod zakończenia niezerowy.
  • Co najmniej resourceFiles jeden określony dla zadania nie jest pobierany.
  • outputFiles Co najmniej jeden określony dla zadania nie jest przekazywany.
  • Czas, który upłynął dla zadania, przekracza maxWallClockTime właściwość określoną w ograniczeniach zadań.

We wszystkich przypadkach sprawdź następujące właściwości pod kątem błędów i informacji o błędach:

  • Właściwość TaskExecutionInformation zawiera wiele właściwości, które zawierają informacje o błędzie. Element taskExecutionResult wskazuje, czy zadanie nie powiodło się z jakiegokolwiek powodu, i exitCode failureInfo podaj więcej informacji na temat błędu.

  • Zadanie zawsze przechodzi do completed stanu TaskState, niezależnie od tego, czy zakończyło się powodzeniem, czy niepowodzeniem.

Rozważ wpływ niepowodzeń zadań na zadanie i zależności zadań. Można określić exitConditions , aby skonfigurować akcje dla zależności i dla zadania.

  • DependencyAction określa, czy blokować lub uruchamiać zadania zależne od zadania, które zakończyły się niepowodzeniem.
  • Funkcja JobAction określa, czy zadanie, które zakończyło się niepowodzeniem, powoduje wyłączenie, zakończenie zadania lub bez zmian.

Wiersze polecenia zadania

Wiersze poleceń zadań nie są uruchamiane w powłoce w węzłach obliczeniowych, więc nie mogą natywnie używać funkcji powłoki, takich jak rozszerzanie zmiennych środowiskowych. Aby korzystać z takich funkcji, należy wywołać powłokę w wierszu polecenia. Aby uzyskać więcej informacji, zobacz Rozszerzanie wiersza polecenia zmiennych środowiskowych.

Dane wyjściowe wiersza polecenia zadania są zapisywane w plikach stderr.txt i stdout.txt . Aplikacja może również zapisywać dane w plikach dziennika specyficznych dla aplikacji. Upewnij się, że zaimplementowano kompleksowe sprawdzanie błędów dla aplikacji, aby szybko wykrywać i diagnozować problemy.

Dzienniki zadań

Jeśli węzeł puli, w którym uruchomiono zadanie, nadal istnieje, możesz pobrać i wyświetlić pliki dziennika zadań. Kilka interfejsów API zezwala na wyświetlanie listy i pobieranie plików zadań, takich jak Plik — Pobierz z zadania. Możesz również wyświetlić i wyświetlić pliki dziennika dla zadania lub węzła przy użyciu witryny Azure Portal.

  1. W górnej części strony Przegląd węzła wybierz pozycję Przekaż dzienniki wsadowe.

    Zrzut ekranu przedstawiający stronę przeglądu węzła z wyróżnioną sekcją Przekazywanie dzienników wsadowych.

  2. Na stronie Przekazywanie dzienników usługi Batch wybierz pozycję Wybierz kontener magazynu, wybierz kontener usługi Azure Storage do przekazania, a następnie wybierz pozycję Rozpocznij przekazywanie.

    Zrzut ekranu przedstawiający stronę Przekazywanie dzienników wsadowych.

  3. Dzienniki można wyświetlić, otworzyć lub pobrać ze strony kontenera magazynu.

    Zrzut ekranu przedstawiający dzienniki zadań w kontenerze magazynu.

Pliki wyjściowe

Ponieważ pule usługi Batch i węzły puli są często efemeryczne, a węzły są stale dodawane i usuwane, najlepiej zapisać pliki dziennika podczas uruchamiania zadania. Pliki wyjściowe zadania to wygodny sposób zapisywania plików dziennika w usłudze Azure Storage. Aby uzyskać więcej informacji, zobacz Utrwalanie danych zadań w usłudze Azure Storage przy użyciu interfejsu API usługi Batch.

Podczas każdego przekazywania plików usługa Batch zapisuje dwa pliki dziennika w węźle obliczeniowym, fileuploadout.txt i fileuploaderr.txt. Możesz zbadać te pliki dziennika, aby dowiedzieć się więcej na temat konkretnego błędu. Jeśli nie podjęto próby przekazania pliku, na przykład dlatego, że samo zadanie nie mogło zostać uruchomione, te pliki dziennika nie istnieją.

Następne kroki