Azure Batch błędy zadań i zadań
Różne błędy mogą wystąpić podczas dodawania, planowania lub uruchamiania Azure Batch zadań i zadań. 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 który zadanie może być aktywne lub uruchomione. Jeśli zadanie przekroczymaxWallClockTime
wartość , zadanie zostanie zakończone z właściwością ustawionąterminateReason
naMaxWallClockTimeExpiry
w poleceniu JobExecutionInformation.JobPreparationTask. Opcjonalnie można określić zadanie podrzędne przygotowania zadania do uruchomienia w każdym węźle obliczeniowym zaplanowanym do uruchomienia zadania podrzędnego. Węzeł uruchamia zadanie podrzędne przygotowania zadania przed pierwszym uruchomieniem zadania podrzędnego. Jeśli zadanie przygotowania zadania zakończy się niepowodzeniem, zadanie nie zostanie uruchomione, a zadanie nie zostanie ukończone.
JobReleaseTask. Opcjonalnie można określić zadanie zwolnienia zadania dla zadań, które mają zadanie podrzędne 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 Azure Portal można ustawić te parametry w sekcji Menedżer zadań, zadania przygotowania i wydania oraz sekcje Zaawansowane na ekranie Dodawanie zadania w usłudze Batch.
Właściwości zadania
Sprawdź następujące właściwości zadania w elemecie JobExecutionInformation pod kątem błędów:
Właściwość
terminateReason
wskazujeMaxWallClockTimeExpiry
, czy zadanie przekroczyłomaxWallClockTime
określone w ograniczeniach zadania, a w związku z tym zadanie zostało zakończone. Tę właściwość można również ustawić nataskFailed
, jeśli atrybut zadaniaonTaskFailure
jest ustawiony naperformExitOptionsJobAction
, a zadanie kończy się niepowodzeniem z warunkiem zakończenia określającymjobAction
terminatejob
wartość .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 podrzędne 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.
Możesz użyć interfejsu API Zadania — przygotowanie listy i stan zadania wydania , aby wyświetlić listę stanu wykonywania wszystkich wystąpień zadań podrzędnych 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
, exitCode
i 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 powróci 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 żadnych 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ń zwolnienia zadania, aby ustalić, czy wystąpiły błędy.
Możesz użyć interfejsu API Zadania — przygotowanie listy i stan zadania wydania , aby wyświetlić listę stanu wykonywania wszystkich wystąpień zadań podrzędnych 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
, exitCode
i 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 zadań mogą zakończyć się niepowodzeniem z następujących powodów:
- Wiersz polecenia zadania kończy się niepowodzeniem i zwraca kod zakończenia bez zera.
- Co najmniej
resourceFiles
jeden określony dla zadania nie jest pobierany. - Co najmniej
outputFiles
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 ma 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 o niepowodzeniu.Zadanie zawsze przechodzi do
completed
stanu TaskState, niezależnie od tego, czy zakończyło się powodzeniem, czy niepowodzeniem.
Należy wziąć pod uwagę wpływ błędów zadań na zadanie i na wszelkie zależności zadań. Można określić exitConditions , aby skonfigurować akcje dla zależności i dla zadania.
- DependencyAction określa, czy mają być blokowane lub uruchamiane 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 lub zmianę zadania.
Wiersze polecenia zadania
Wiersze polecenia zadania nie są uruchamiane w powłoce w węzłach obliczeniowych, dlatego 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 Rozszerzenie wiersza polecenia zmiennych środowiskowych.
Dane wyjściowe wiersza polecenia zadania są zapisywane 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 w celu szybkiego wykrywania i diagnozowania problemów.
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 — Pobieranie z zadania. Możesz również wyświetlić i wyświetlić pliki dziennika dla zadania lub węzła przy użyciu Azure Portal.
W górnej części strony Przegląd węzła wybierz pozycję Przekaż dzienniki wsadowe.
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.
Dzienniki można wyświetlać, otwierać lub pobierać ze strony kontenera 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 po uruchomieniu zadania. Pliki wyjściowe zadań 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 o konkretnym niepowodzeniu. Jeśli na przykład próba przekazania pliku nie została podjęta, ponieważ nie można uruchomić samego zadania, te pliki dziennika nie istnieją.
Następne kroki
- Dowiedz się więcej o zadaniach i zadaniach podrzędnych usługi Batch oraz zadaniach przygotowywania i wydawania zadań.
- Dowiedz się więcej o błędach puli i węzłów usługi Batch.