Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację
Apigee X. info
Filmy
Obejrzyj ten film, aby dowiedzieć się więcej o rozwiązywaniu błędów 503 Service Unavailable.
| Wideo | Opis |
|---|---|
| Błąd 503 Service Unavailable z serwera backendu | Dowiedz się więcej o tych kwestiach:
|
Krótki opis problemu
Aplikacja kliencka otrzymuje kod stanu odpowiedzi HTTP 503 z komunikatem Service Unavailable po wywołaniu proxy interfejsu API.
Komunikaty o błędach
Może wyświetlić się jeden z tych komunikatów o błędach:
HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity
W odpowiedzi HTTP może też pojawić się komunikat o błędzie podobny do tego:
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Uwaga: powyższy kod odpowiedzi i komunikat o błędzie to tylko przykłady. W niektórych przypadkach możesz otrzymać tylko kod odpowiedzi o błędzie bez komunikatu o błędzie. Format i treść kodu odpowiedzi o błędzie oraz komunikatu o błędzie mogą się różnić w zależności od implementacji serwera backendu.
Przyczyny
Kod stanu HTTP 503 oznacza, że serwer nie może obecnie obsługiwać przychodzących żądań. Zwykle ten błąd występuje, ponieważ serwer jest zbyt zajęty lub jest tymczasowo niedostępny z powodu konserwacji.
Możliwe przyczyny odpowiedzi 503 Service Unavailable:
| Przyczyna | Opis | Kto może wykonać czynności rozwiązywania problemów |
|---|---|---|
| Przeciążony serwer | Serwer backendu jest przeciążony lub przekracza swoją pojemność i nie może obsługiwać nowych przychodzących żądań klientów. | Użytkownicy publicznej i prywatnej chmury Edge |
| Serwer w trakcie konserwacji | Serwer backendu może być tymczasowo niedostępny z powodu konserwacji. | Użytkownicy publicznej i prywatnej chmury Edge |
Przyczyna: przeciążony serwer lub serwer w trakcie konserwacji
W Apigee Edge błąd 503 Service Unavailable może być zwracany przez serwer backendu w jednym z tych przypadków:
- Serwer backendu jest przeciążony lub zajęty i nie może obsługiwać nowych żądań.
- Serwer backendu jest tymczasowo niedostępny z powodu konserwacji.
Diagnostyka
Aby zdiagnozować błąd, możesz użyć jednej z tych 3 metod:
- Narzędzie Trace
- Logi dostępu NGINX
- Bezpośrednie wywołanie serwera backendu
Aby dowiedzieć się więcej o każdej metodzie, kliknij karty poniżej.
Narzędzie Trace
- Włącz sesję śledzenia, i wywołaj interfejs API, aby odtworzyć problem – 503 Service Unavailable.
- Wybierz jedno z nieudanych żądań i sprawdź ślad.
- Przejdź przez różne etapy śledzenia i znajdź miejsce, w którym wystąpił błąd.
- Jeśli okaże się, że błąd 503 jest zwracany jako odpowiedź z serwera docelowego,
przyczyną błędu 503 jest serwer docelowy.
Oto przykładowy zrzut ekranu śledzenia pokazujący odpowiedź 503 Service Unavailable otrzymaną z serwera docelowego:
- Kliknij etap Response received from target server (Odpowiedź otrzymana z serwera docelowego) i sprawdź sekcje
Response Headers (Nagłówki odpowiedzi) i Response Content (Treść odpowiedzi), aby sprawdzić, czy zawierają przydatne informacje:
- Nagłówki odpowiedzi mogą zawierać nagłówek Server (Serwer), który wskazuje skąd została wysłana odpowiedź o błędzie.
- Treść odpowiedzi może zawierać dodatkowe informacje o tym, dlaczego serwer docelowy wysłał kod odpowiedzi 503.
- Aby potwierdzić, że błąd 503 pochodzi z serwera docelowego, sprawdź
wartości X-Apigee-fault-source i X-Apigee-fault-code w fazie AX
(Analytics Data Recorded) (Zapisane dane analityczne) w śladzie, wykonując te czynności:
- Kliknij fazę AX (Analytics Data Recorded) (Zapisane dane analityczne), jak pokazano na zrzucie ekranu poniżej:

- Przewiń w dół do sekcji Phase Details (Szczegóły fazy) do sekcji Response Headers (Nagłówki odpowiedzi) i określ wartości
X-Apigee-fault-code i X-Apigee-fault-source , jak pokazano poniżej:

- Jeśli wartości X-Apigee-fault-source i X-Apigee-fault-code są zgodne z wartościami
podanymi w tabeli poniżej, możesz potwierdzić, że błąd 503 pochodzi z
serwera docelowego:
Nagłówki odpowiedzi Wartość X-Apigee-fault-source cel X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
- Kliknij fazę AX (Analytics Data Recorded) (Zapisane dane analityczne), jak pokazano na zrzucie ekranu poniżej:
- Sprawdź, czy używasz łańcucha proxy, czyli czy serwer docelowy lub punkt końcowy docelowy jest
wywoływany przez inne proxy w Apigee. Aby to sprawdzić:
- Wróć do fazy Request sent to target server (Żądanie wysłane do serwera docelowego) kliknij przycisk Show Curl (Pokaż Curl) i określ alias hosta serwera docelowego.
- Jeśli alias hosta serwera docelowego wskazuje alias hosta wirtualnego, oznacza to łańcuch proxy. W takim przypadku musisz powtórzyć wszystkie powyższe czynności w przypadku proxy w łańcuchu , aż ustalisz, co faktycznie powoduje błąd 503 Service Unavailable. W takich przypadkach błąd 503 Service Unavailable może wystąpić również w innych proxy w łańcuchu na innych etapach, co można zdiagnozować za pomocą tego przewodnika.
- Jeśli alias hosta serwera docelowego wskazuje serwer backendu, przejdź do sekcji Rozwiązanie.
Logi dostępu NGINX
Możesz też sprawdzić logi dostępu NGINX, aby określić, czy kod stanu 503 został wysłany przez serwer backendu. Jest to szczególnie przydatne, jeśli problem wystąpił w przeszłości lub jeśli występuje sporadycznie i nie możesz zarejestrować śladu w interfejsie. Aby uzyskać te informacje z logów dostępu NGINX:
- Sprawdź logi dostępu NGINX.
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- Wyszukaj błędy 503 w przypadku konkretnego proxy interfejsu API w określonym czasie (jeśli problem wystąpił w przeszłości) lub w przypadku żądań, które nadal kończą się niepowodzeniem z powodu błędu 503.
- Jeśli występują błędy 503, sprawdź, czy pochodzą one z serwera backendu.
Jeśli wartości X-Apigee-fault-source i X-Apigee-fault-code są zgodne z
wartościami podanymi
w tabeli poniżej, błąd 503 pochodzi z serwera backendu:
Nagłówki odpowiedzi Wartość X-Apigee-fault-source cel X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode Oto przykładowy wpis pokazujący błąd 503 spowodowany przez serwer docelowy:
- Sprawdź konkretne proxy interfejsu API i upewnij się, że używasz łańcucha proxy czyli czy serwer docelowy lub punkt końcowy docelowy nie wywołuje innego proxy w Apigee. Jeśli używasz łańcucha proxy, musisz powtórzyć wszystkie powyższe czynności w przypadku proxy w łańcuchu, aż ustalisz, co faktycznie powoduje błąd 503 Service Unavailable. W takich przypadkach, błąd 503 Service Unavailable może wystąpić również w innych proxy w łańcuchu na innych etapach, co można zdiagnozować za pomocą tego przewodnika.
- Jeśli potwierdzisz, że nie używasz łańcucha proxy, a błąd 503 pochodzi z twojego serwera backendu, przejdź do sekcji Rozwiązanie.
Wywołanie serwera backendu
Możesz bezpośrednio wywołać serwer backendu i sprawdzić, czy otrzymujesz tę samą 503 Service Unavailable odpowiedź, która została odebrana, gdy żądanie zostało wysłane przez Apigee Edge.
- Upewnij się, że masz wszystkie wymagane nagłówki, parametry zapytania i dane logowania, które muszą zostać przekazane do serwera backendu w ramach żądania.
- Jeśli usługa backendu jest publicznie dostępna, możesz użyć polecenia curl, Postmana lub innego klienta REST i bezpośrednio wywołać interfejs API serwera backendu.
- Jeśli serwer backendu jest dostępny tylko z procesorów komunikatów, możesz użyć polecenia curl, Postmana lub innego klienta REST i bezpośrednio wywołać interfejs API serwera backendu z procesora komunikatów.
- Sprawdź, czy usługa backendu rzeczywiście zwraca błąd 503 Service Unavailable.
Rozwiązanie
Jeśli stwierdzisz, że błąd 503 pochodzi z serwera backendu, możesz wykonać te czynności, aby rozwiązać problem:
- Jeśli problem jest spowodowany tym, że serwer backendu jest niedostępny z powodu konserwacji, możesz go ponownie uruchomić po zakończeniu konserwacji.
- Jeśli problem jest spowodowany przeciążeniem serwera backendu, rozwiąż go, jeśli masz dostęp do serwera backendu. W przeciwnym razie może być konieczna współpraca z zespołem serwera backendu w celu rozwiązania problemu.
Diagnozowanie problemów za pomocą monitorowania interfejsu API
Monitorowanie interfejsu API umożliwia szybkie wyodrębnianie obszarów problemowych w celu diagnozowania błędów, problemów z wydajnością i opóźnieniami oraz ich źródła, takiego jak aplikacje deweloperów, proxy interfejsu API, cele backendu lub platforma interfejsu API.
Zapoznaj się z przykładowym scenariuszem, który pokazuje, jak rozwiązywać problemy z kodem 5xx w interfejsach API za pomocą monitorowania interfejsu API. Możesz na przykład skonfigurować alert, aby otrzymywać powiadomienia, gdy liczba błędów messaging.adaptors.http.flow.ErrorResponseCode przekroczy określony próg.
Informacje diagnostyczne, które musisz zebrać
Jeśli problem nadal występuje po wykonaniu powyższych instrukcji, zbierz te informacje diagnostyczne i skontaktuj się z zespołem pomocy Apigee.
Jeśli korzystasz z chmury publicznej, podaj te informacje:
- Nazwa organizacji
- Nazwa środowiska
- Nazwa proxy interfejsu API
- Pełne polecenie curl do odtworzenia błędu 503
- Plik śledzenia zawierający żądania z błędem 503 Service Unavailable
- Jeśli błędy 503 nie występują obecnie, podaj okres z informacjami o strefie czasowej w którym błędy 503 występowały w przeszłości.
Jeśli korzystasz z chmury prywatnej, podaj te informacje:
- Pełny komunikat o błędzie zaobserwowany w przypadku nieudanych żądań.
- Nazwa organizacji, środowiska i proxy interfejsu API, w przypadku których występują błędy 503.
- Pakiet proxy interfejsu API.
- Plik śledzenia zawierający żądania z błędem 503 Service Unavailable.
- Logi dostępu NGINX.
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- Logi procesora komunikatów.
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Okres z informacjami o strefie czasowej, w którym wystąpiły błędy 503.