Udostępnij za pośrednictwem


Rozwiązywanie problemów z hookami serwisu

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Skorzystaj z tego artykułu, aby uzyskać ogólne wskazówki dotyczące rozwiązywania problemów i odpowiedzi na często zadawane pytania.

Wyświetlanie aktywności i debugowanie problemów

Na stronie Service Hooks w administratorze dostępu do sieci Web wyświetlane są twoje ostatnie działania (z ostatnich 14 dni) dla każdej subskrypcji oraz informacja, czy subskrypcja jest włączona, wyłączona lub ograniczona.

Możesz uzyskać dostęp do szczegółowej historii subskrypcji, w tym szczegółowych danych żądania/odpowiedzi, co jest przydatne do debugowania problematycznej usługi lub subskrypcji.

  1. Aby wyświetlić aktywność i stan subskrypcji, przejdź do strony Service Hooks.

    Zrzut ekranu przedstawiający widok aktywności i stanu subskrypcji.

  2. Aby wyświetlić szczegółowe działania dla subskrypcji, w tym pełne dane żądania, odpowiedzi i ładunku zdarzenia, wybierz subskrypcję w tabeli, a następnie wybierz pozycję historia.

    Zrzut ekranu przedstawiający szczegółowy widok działań dla subskrypcji.

Błędy subskrypcji i okres próbny (ograniczony)

Typy błędów

Błędy z powiadomienia o punktach zaczepienia usługi są pogrupowane w następujące kategorie:

  • Błędy terminalu
  • Awarie przejściowe
  • Trwałe błędy

Błędy terminalu

Jedyną awarią terminalu jest kod stanu HTTP 410 (zniknęły). Gdy w subskrypcji wystąpi awaria terminalna, jest ona automatycznie wyłączona bez względu na jej poprzedni stan.

Awarie przejściowe

Gdy subskrypcja widzi błąd przejściowy, próbuje ponownie wysłać powiadomienie do ośmiu razy, z rosnącym opóźnieniem między poszczególnymi próbami. Błędy przejściowe obejmują następujące kody:

  • 408 (Limit czasu żądania)
  • 502 (Zła brama)
  • 503 (Usługa niedostępna)
  • 504 (Limit czasu bramy)

Sekwencja ponownych prób dla błędów przejściowych

Ponów próbę # Czas oczekiwania
Przed ponowieniem próby 1 poczekaj ok. 1 sekundę
Przed ponowieniem próby 2 czekaj ok. 2 sekundy (całkowite opóźnienie wynosi 3 sekundy)
Przed trzecią próbą ponowienia odczekaj ok. 4 sekundy (całkowite opóźnienie wynosi 7 sekund)
Przed ponowieniem próby 4 czekaj ok. 8 sekund (całkowite opóźnienie wynosi 15 sekund)
Przed ponowną próbą 5 czekaj ok. 16 sekund (całkowite opóźnienie wynosi 31 sekund)
Przed ponowną próbą 6 czekaj ~32 sekund (całkowite opóźnienie 63 sekund)
Przed ponowieniem próby 7 czekaj ok. 60 sekund (maksymalny czas wycofywania, całkowite opóźnienie 123 sekund)
Przed ponowieniem próby 8 czekaj ok. 60 sekund (maksymalny czas wycofywania, całkowite opóźnienie 183 sekund)

Jeśli powiadomienie wyczerpie wszystkie próby i nadal doświadcza przejściowego błędu przy każdej próbie, subskrypcja przestaje próbować wysłać powiadomienie i traktuje to powiadomienie tak, jakby napotkało trwałe niepowodzenie.

Trwałe błędy

Trwałe błędy obejmują wszystkie inne kody błędów HTTP, na przykład: 404 (Nie znaleziono), 500 (wewnętrzny błąd serwera) itd.

Gdy subskrypcja doświadczy trwałego niepowodzenia, zostanie ona umieszczona na okresie próbnym.

Okres próbny / Nadzór kuratorski

Podczas okresu próbnego subskrypcja jest ograniczona w liczbie powiadomień, które może wysyłać. Jeśli subskrypcja wciąż doświadcza trwałych niepowodzeń, staje się coraz bardziej ograniczona, a ostatecznie wyłączona. Jeśli subskrypcja otrzyma pomyślną odpowiedź podczas próby, zostanie przywrócona do w pełni włączonego stanu.

Sekwencja maksymalnie siedmiu ponownych prób podczas okresu próbnego subskrypcji

Gdy subskrypcja jest w okresie próbnym, wszystkie nowe zdarzenia zostaną utracone. Po pomyślnym ponowieniu próby subskrypcja zostanie włączona, a zdarzenia zostaną ponownie opublikowane.

Ponów próbę # Czas oczekiwania
Przed ponowieniem próby 1 poczekaj ok. 20 minut
Przed ponowną próbą 2 odczekaj ok. 40 minut (łączny czas próbny wynoszący 1 godzinę)
Przed ponowieniem próby 3 odczekaj ok. 1 godzinę 20 minut (łączny czas próbny wynoszący 2,33 godziny)
Przed ponowieniem próby 4 odczekaj ok. 2 godziny 40 minut (łączny czas próbny wynoszący 5 godzin)
Przed ponowieniem próby 5 odczekaj ok. 5 godzin 20 minut (łączny czas próbny wynoszący 10,33 godziny)
Przed ponowną próbą 6 odczekaj ok. 10 godzin 40 minut (łączny czas próbny wynoszący 21 godzin)
Przed ponowieniem próby 7 poczekaj ok. 15 godzin (maksymalny czas opóźnienia, łączny okres próbny wynoszący 36 godzin)

Po siedmiu ponownych próbach stan subskrypcji zostanie ustawiony na DisabledBySystem w przypadku niepowodzenia powiadamiania użytkownika.

Często zadawane pytania

Jaki jest limit ładunku dla narzędzia service-hook?

A: Limit ładunku wynosi 2 MB. Większe ładunki powodują obniżenie wydajności i niezawodności. Najlepszą praktyką jest ograniczenie ładunku haczyków serwisowych do maksymalnie 2 MB.

Co oznacza status Włączone (ograniczone)?

A: Subskrypcja staje się ograniczona, jeśli wystąpi zbyt wiele awarii. Włączone (ograniczone) jest równoznaczne z byciem na okresie próbnym.

Co oznacza status Wyłączone (z powodu awarii)?

1: Subskrypcja jest automatycznie wyłączona po serii kolejnych niepowodzeń w dłuższym okresie lub napotkaniu awarii terminalu. Typy błędów przejściowych zostają ponowione kilka razy przed zadeklarowaniem błędu. Trwałe błędy typów nie są ponawiane. Poniżej przedstawiono przykłady każdego typu awarii.

  • Przejściowy: 408 (limit czasu żądania), 502 (zła brama), 503 (usługa niedostępna), 504 (limit czasu bramy)
  • Terminal: 410 (zniknęły)
  • Trwałe: wszystkie błędy, które nie są przejściowe lub terminalowe

Jaki jest status Wyłączone (użytkownik opuścił projekt)?

A: Użytkownik, który utworzył subskrypcję, nie jest już członkiem zespołu.

.: Co należy wypróbować, jeśli punkt zaczepienia usługi nie działa?

A: Sprawdź następujące elementy:

  • Upewnij się, że subskrypcja jest włączona

  • Upewnij się, że ustawienia subskrypcji są poprawne (filtry zdarzeń i akcje)

  • Przyjrzyj się historii, zwłaszcza jeśli występują błędy

Czy mogę przyznać zwykłemu użytkownikowi projektu możliwość wyświetlania i zarządzania subskrypcjami webhooków dla projektu?

A: Domyślnie tylko administratorzy projektu mają te uprawnienia. Aby udzielić je bezpośrednio innym użytkownikom, możesz użyć narzędzia wiersza poleceń lub interfejsu API REST Security.

.: Czy mogę programowo tworzyć subskrypcje?

A: Tak, użyj interfejsów API REST .