Udostępnij za pośrednictwem


Błędy prac 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, jak sprawdzać i zarządzać błędami występującymi po przesłaniu zadań i czynności.

Niepowodzenia zadań

Praca to grupa jednej lub więcej zadań, które określają wiersze poleceń 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 wartość maxWallClockTime, zostanie zakończone z właściwością terminateReason ustawioną na MaxWallClockTimeExpiry w obiekcie JobExecutionInformation.

  • JobPreparationTask. Opcjonalnie można określić zadanie przygotowawcze do uruchomienia na każdym węźle obliczeniowym, który ma uruchomić zadanie robocze. Węzeł uruchamia zadanie przygotowawcze przed pierwszym uruchomieniem zadania dla tego 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 dla zadań, które mają zadanie przygotowania. 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 związane z wydaniem pracy zakończy się niepowodzeniem, praca nadal przechodzi do stanu completed.

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 jobActionterminatejob.

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

Zadania przygotowawcze

Instancja zadania przygotowania zadania jest uruchamiana na każdym węźle obliczeniowym przy pierwszym uruchomieniu zadania dla danego zadania. Zadanie przygotowania pracy można traktować jako szablon zadania, w ramach którego uruchamiane są różne wystąpienia, do liczby węzłów w puli. Sprawdź wystąpienia zadań przygotowawczych, aby sprawdzić, czy pojawiły się 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 przygotowania pracy zostanie uruchomione, zadanie, które je wyzwoliło, zostanie przeniesione do taskStatepreparing. Jeśli zadanie przygotowawcze się nie powiedzie, zadanie, które wyzwala, zostanie przywrócone do stanu active i nie zostanie uruchomione.

Jeśli zadanie przygotowawcze zakończy się niepowodzeniem, zadanie inicjujące nie zostanie uruchomione. Zadanie nie zostało ukończone i zostało zablokowane. Jeśli nie ma innych prac z zadaniami, które można zaplanować, pula mogłaby być nieużywana.

Zadania związane z wydawaniem pracy

Wystąpienie zadania zwalniania uruchamia się, gdy zadanie jest zakończone na każdym węźle, na którym uruchomiono zadanie przygotowawcze. Sprawdź wystąpienia zadań związanych z wydaniem pracy, 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 nie powiedzie się, zadanie jest nadal przerywane i przechodzi do stanu completed.

Błędy zadań

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

  • Wykonywanie polecenia zadania nie powiodło się i zwraca niezerowy kod zakończenia.
  • Co najmniej jeden z resourceFiles określonych dla zadania nie jest pobierany.
  • Co najmniej jeden element outputFiles 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, a exitCode oraz 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 wykonywaną pracę i zależności między zadaniami. 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.

Polecenia wiersza zadań

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

Wynik wiersza poleceń zadania jest zapisywany w plikachstderr.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ż listować i wyświetlać pliki dziennika dla zadania lub węzła za pomocą portalu Azure.

  1. Na górze strony Przegląd dla węzła, wybierz Przesyłanie dzienników wsadowych.

    Zrzut ekranu przedstawiający stronę podsumowania węzła z wyróżnioną sekcją Przesyłanie zbiorczych dzienników.

  2. Na stronie Przekazywanie dzienników Batch wybierz opcję Wybierz kontener przechowywania, aby wybrać kontener Azure Storage do przesłania, a następnie wybierz opcję Rozpocznij przesyłanie.

    Zrzut ekranu strony z dziennikami wsadowymi do przesyłania.

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

    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, gdy zadanie jest uruchomione. Pliki wyjściowe zadania to wygodny sposób zapisywania plików dziennika w usłudze Azure Storage. Aby uzyskać więcej informacji, zobacz Zachowaj dane zadań w Azure Storage za pomocą 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ą.

Dalsze kroki