Rozwiązywanie problemów z punktami zaczepieniami usługi
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 problemów z działaniami i debugowaniem
Strona Punkty zaczepienia usługi w administratorze dostępu do sieci Web pokazuje ostatnie działania (ostatnie 14 dni) dla każdej subskrypcji oraz określa, 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.
Aby wyświetlić działanie i stan subskrypcji, przejdź do strony Punkty zaczepienia usługi.
Aby wyświetlić szczegółowe działania dla subskrypcji, w tym pełne żądanie, odpowiedź i dane ładunku zdarzenia, wybierz subskrypcję w tabeli, a następnie wybierz pozycję Historia.
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
- Błędy przejściowe
- Trwałe błędy
Błędy terminalu
Jedyną awarią terminalu jest kod stanu HTTP 410 (zniknęły). Gdy subskrypcja zobaczy błąd terminalu, jest ona automatycznie wyłączona bez względu na jego poprzedni stan.
Błędy 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 ponowić próbę 1 | poczekaj ok. 1 sekundę |
Przed ponowić próbę 2 | czekaj ok. 2 sekundy (całkowite opóźnienie wynosi 3 sekundy) |
Przed ponowić próbę 3 | odczekaj ok. 4 sekundy (całkowite opóźnienie wynosi 7 sekund) |
Przed ponowić próbę 4 | czekaj ok. 8 sekund (całkowite opóźnienie wynosi 15 sekund) |
Przed ponowić próbę 5 | czekaj ok. 16 sekund (całkowite opóźnienie wynosi 31 sekund) |
Przed ponowić próbę 6 | wait ~32 s (całkowite opóźnienie 63 sekund) |
Przed ponowić próbę 7 | czekaj ok. 60 sekund (maksymalny czas wycofywania, całkowite opóźnienie 123 sekund) |
Przed ponowić próbę 8 | czekaj ok. 60 sekund (maksymalny czas wycofywania, całkowite opóźnienie 183 sekund) |
Jeśli powiadomienie wyczerpuje wszystkie próby i nadal widzi błąd przejściowy dla każdej próby, subskrypcja przestanie próbować wysłać powiadomienie i traktuje powiadomienie tak, jakby widział 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 zobaczy trwałe niepowodzenie, zostanie ona umieszczona w okresie próbnym.
Zawieszenia
Podczas okresu próbnego subskrypcja jest ograniczona w liczbie powiadomień, które może wysyłać. Jeśli subskrypcja będzie nadal osiągać wartość Niepowodzenia trwałe, staje się coraz bardziej ograniczona i ostatecznie wyłączona. Jeśli subskrypcja otrzyma pomyślną odpowiedź podczas próby, zostanie przywrócona do w pełni włączonego stanu.
Sekwencja siedmiu maksymalnych ponownych prób, gdy subskrypcja jest w okresie próbnym
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 ponowić próbę 1 | poczekaj ok. 20 minut |
Przed ponowić próbę 2 | odczekaj ok. 40 minut (łączny czas próbny wynoszący 1 godzinę) |
Przed ponowić próbę 3 | odczekaj ok. 1 godzinę 20 minut (łączny czas próbny wynoszący 2,33 godziny) |
Przed ponowić próbę 4 | odczekaj ok. 2 godziny 40 minut (łączny czas próbny wynoszący 5 godzin) |
Przed ponowić próbę 5 | odczekaj ok. 5 godzin 20 minut (łączny czas próbny wynoszący 10,33 godziny) |
Przed ponowić próbę 6 | odczekaj ok. 10 godzin 40 minut (łączny czas próbny wynoszący 21 godzin) |
Przed ponowić próbę 7 | poczekaj ok. 15 godzin (maksymalny czas wycofywania, łączny czas próbny wynoszący 36 godzin) |
Po siedmiu ponownych próbach stan subskrypcji zostanie ustawiony na DisabledBySystem , jeśli powiadomienie użytkownika zakończy się niepowodzeniem.
Często zadawane pytania
Pyt.: Jaki jest limit ładunku elementu service-hook?
1: Limit ładunku wynosi 2 MB. Większe ładunki powodują obniżenie wydajności i niezawodności. Najlepszym rozwiązaniem jest ograniczenie ładunku wpięcia usługi do maksymalnie 2 MB.
Pyt.: Jaki jest stan Włączone (ograniczone) oznacza?
1: Subskrypcja zostanie ograniczona, jeśli wystąpi zbyt wiele awarii. Włączone (ograniczone) jest takie samo jak w przypadku okresu próbnego.
Pyt.: Jaki jest stan 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 są ponawiane kilka razy przed zadeklarowaniem błędu. Trwałe typy błędó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
Pyt.: Jaki jest stan Wyłączone (projekt po lewej stronie użytkownika)?
1: Użytkownik, który utworzył subskrypcję, nie jest już członkiem zespołu.
Pyt.: Co należy wypróbować, jeśli punkt zaczepienia usługi nie działa?
1: 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
Pyt.: Czy mogę przyznać zwykłemu użytkownikowi projektu możliwość wyświetlania subskrypcji punktu zaczepienia usługi i zarządzania nimi dla projektu?
1: Domyślnie tylko administratorzy projektu mają te uprawnienia. Aby udzielić go bezpośrednio innym użytkownikom, możesz użyć narzędzia wiersza polecenia lub interfejsu API REST zabezpieczeń.
Pyt.: Czy mogę programowo tworzyć subskrypcje?
Ach: Tak, użyj interfejsów API REST.