Udostępnij przez


Obsługa błędów i wykrywanie w usłudze Azure Batch

Czasami może być konieczne obsłużenie błędów zadań i aplikacji w rozwiązaniu usługi Azure Batch. W tym artykule opisano różne typy błędów usługi Batch oraz sposób rozwiązywania typowych problemów.

Kody błędów

Niektóre ogólne typy błędów, które mogą być widoczne w usłudze Batch, to:

  • Błędy sieci dla żądań, które nigdy nie dotarły do usługi Batch lub błędy sieci, gdy odpowiedź usługi Batch nie dotarła do klienta w odpowiednim czasie.
  • Wewnętrzne błędy serwera. Te błędy mają standardowy 5xx kod stanu odpowiedzi HTTP.
  • Błędy związane z ograniczaniem przepustowości. Te błędy obejmują odpowiedzi HTTP o kodzie stanu 429 lub 503 z nagłówkiem Retry-after.
  • 4xx błędy, takie jak AlreadyExists i InvalidOperation. Te błędy wskazują, że zasób nie jest w prawidłowym stanie do przejścia w nowy stan.

Aby uzyskać szczegółowe informacje na temat określonych kodów błędów, zobacz Kody stanu i błędów usługi Batch. Ta dokumentacja zawiera kody błędów dla interfejsu REST API, usługi Batch oraz zadań roboczych i harmonogramowania.

Błędy aplikacji

Podczas wykonywania aplikacja może generować dane wyjściowe diagnostyczne. Możesz użyć tych danych wyjściowych, aby rozwiązać problemy. Usługa Batch zapisuje standardowe dane wyjściowe i standardowy błąd do plików stdout.txt i stderr.txt w katalogu zadań na węźle obliczeniowym. Aby uzyskać więcej informacji, zobacz Pliki i katalogi w usłudze Batch.

Aby pobrać te pliki wyjściowe, użyj witryny Azure Portal lub jednego z zestawów SDK usługi Batch. Aby na przykład pobrać pliki na potrzeby rozwiązywania problemów, użyj elementów ComputeNode.GetNodeFile i CloudTask.GetNodeFile w bibliotece platformy .NET usługi Batch.

Błędy zadań

Błędy zadań należą do kilku kategorii.

Błędy przetwarzania wstępnego

Jeśli uruchomienie zadania nie powiedzie się, dla zadania zostanie ustawiony błąd przetwarzania wstępnego. Błędy przetwarzania wstępnego mogą wystąpić, jeśli:

  • Pliki zasobów zadania zostały przeniesione.
  • Konto magazynowe nie jest już dostępne.
  • Wystąpił inny problem, który uniemożliwił pomyślne skopiowanie plików do węzła.

Błędy przekazywania plików

Jeśli pliki określone dla zadania nie zostaną przekazane z jakiegokolwiek powodu, dla zadania zostanie ustawiony błąd przekazywania pliku. Błędy przekazywania plików mogą wystąpić, jeśli:

  • Token sygnatury dostępu współdzielonego (SAS) dostarczony do uzyskiwania dostępu do usługi Azure Storage jest nieprawidłowy.
  • Token SAS nie zapewnia uprawnień do zapisu.
  • Konto magazynowe nie jest już dostępne.
  • Wystąpił inny problem, który uniemożliwił pomyślne skopiowanie plików z węzła.

Błędy aplikacji

Proces określony przez wiersz polecenia zadania może również zakończyć się niepowodzeniem. Aby uzyskać więcej informacji, zobacz Kody zakończenia zadania.

W przypadku błędów aplikacji skonfiguruj usługę Batch, aby automatycznie ponowić próbę wykonania zadania do określonej liczby razy.

Błędy ograniczeń

Aby określić maksymalny czas wykonania zadania lub pracy, ustaw ograniczenie maxWallClockTime. To ustawienie służy do zakończenia zadań, które nie posuwają się naprzód.

Gdy zadanie przekracza maksymalny czas:

  • Zadanie jest oznaczone jako ukończone.
  • Kod zakończenia jest ustawiony na 0xC000013A.
  • Pole schedulingError jest oznaczone jako { category:"ServerError", code="TaskEnded"}.

Kody zakończenia zadania

Gdy zadanie uruchamia proces, Batch wypełnia właściwość kodu zakończenia zadania kodem zwrotnym procesu. Jeśli proces zwraca kod zakończenia niezerowy, usługa Batch oznacza zadanie jako niepowodzenie.

Usługa Batch nie określa kodu zakończenia zadania. Sam proces lub system operacyjny, na którym jest wykonywany proces, określa kod zakończenia.

Błędy lub przerwy w zadaniach

Zadania mogą od czasu do czasu zakończyć się niepowodzeniem lub zostać przerwane. Na przykład:

  • Sama aplikacja zadań może zakończyć się niepowodzeniem.
  • Węzeł, na którym jest uruchomione zadanie, może zostać uruchomiony ponownie.
  • Operacja zmiany rozmiaru może usunąć węzeł z puli. Ta akcja może wystąpić, jeśli zasady cofania przydziału puli natychmiast usuwają węzły bez oczekiwania na zakończenie zadań.

We wszystkich przypadkach usługa Batch może automatycznie umieszczać zadanie ponownie w kolejce do wykonania na innym węźle.

Istnieje również możliwość, że sporadyczny problem może spowodować, że zadanie przestanie odpowiadać lub będzie trwało zbyt długo. Dla zadania można ustawić maksymalny interwał wykonywania. Jeśli zadanie przekroczy interwał, usługa Batch przerywa aplikację zadań.

Nawiązywanie połączenia z węzłami obliczeniowymi

Debugowanie i rozwiązywanie problemów można wykonać, logując się zdalnie do węzła obliczeniowego. Użyj witryny Azure Portal, aby pobrać plik protokołu RDP (Remote Desktop Protocol) dla węzłów systemu Windows i uzyskać informacje o połączeniu protokołu Secure Shell (SSH) dla węzłów systemu Linux. Te informacje można również pobrać przy użyciu interfejsów API usługi Batch dla platformy .NET lub języka Python.

Aby nawiązać połączenie z węzłem za pośrednictwem protokołu RDP lub SSH, najpierw utwórz użytkownika w węźle. Użyj jednej z następujących metod:

W razie potrzeby skonfiguruj lub wyłącz dostęp do węzłów obliczeniowych.

Rozwiązywanie problemów z węzłami problematycznymi

Aplikacja lub usługa kliencka usługi Batch może zbadać metadane zadań, które zakończyły się niepowodzeniem, aby zidentyfikować węzeł problemu. Każdy węzeł w puli ma unikatowy identyfikator. Metadane zadania obejmują węzeł, w którym jest uruchamiane zadanie. Po znalezieniu węzła problemu spróbuj wykonać następujące metody, aby rozwiązać problem.

Ponowne uruchamianie węzła

Ponowne uruchomienie węzła czasami rozwiązuje ukryte problemy, takie jak zablokowane lub awarie procesów. Jeśli pula używa zadania startowego lub zadanie używa zadania przygotowawczego, ponowne uruchomienie węzła rozpoczyna wykonanie tych zadań.

Ponowne obrazowanie węzła

Ponowne przywrócenie obrazu węzła reinstaluje system operacyjny. Uruchom zadania startowe i zadania przygotowawcze pracy ponownie po ponownym odtworzeniu.

Usuwanie węzła z puli

Usunięcie węzła z puli jest czasami konieczne.

Wyłączanie planowania zadań w węźle

Wyłączenie planowania zadań w węźle skutecznie powoduje przełączenie węzła w tryb offline. Usługa Batch nie przypisuje żadnych dalszych zadań do węzła. Jednak ten węzeł nadal działa w puli. Następnie można dokładniej zbadać błędy bez utraty danych zadania, które zakończyły się niepowodzeniem. Węzeł nie spowoduje również większej liczby niepowodzeń zadań.

Na przykład wyłącz planowanie zadań w węźle. Następnie zaloguj się zdalnie do węzła. Przejrzyj dzienniki zdarzeń i wykonaj inne kroki rozwiązywania problemów. Po rozwiązaniu tych problemów ponownie włącz planowanie zadań, aby przywrócić węzeł do trybu online.

Za pomocą tych akcji można określić, że usługa Batch obsługuje zadania aktualnie uruchomione w węźle. Na przykład, gdy wyłączysz planowanie zadań za pomocą interfejsu API Batch .NET, możesz określić wartość wyliczenia dla DisableComputeNodeSchedulingOption. Można wybrać opcję:

  • Kończenie uruchomionych zadań: Terminate
  • Ponowne kolejkowanie zadań do planowania w innych węzłach: Requeue
  • Zezwalaj na wykonywanie uruchomionych zadań przed wykonaniem akcji: TaskCompletion

Ponów próbę po błędach

Interfejsy API Batch informują o niepowodzeniach. Możesz ponowić próbę wszystkich interfejsów API przy użyciu wbudowanej procedury obsługi ponawiania prób globalnych. Najlepszym rozwiązaniem jest użycie tej opcji.

Po awarii zaczekaj kilka sekund przed ponowieniu próby. Jeśli ponowisz próbę zbyt często lub zbyt szybko, mechanizm obsługi ponownych prób ogranicza liczbę żądań.

Następne kroki