Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację
Apigee X. info
Filmy
| Wideo | Opis |
|---|---|
| 500 Wewnętrzny błąd serwera – spowodowany przez backend | Pokazuje w czasie rzeczywistym 500 Internal Server Error spowodowany przez serwer backendu oraz czynności, które należy wykonać, aby rozwiązać ten problem. |
Krótki opis problemu
Aplikacja kliencka otrzymuje kod stanu HTTP 500 z komunikatem
Internal Server Error w odpowiedzi na wywołania interfejsu API.
Kod stanu HTTP 500 to ogólna odpowiedź o błędzie. Oznacza to, że serwer
napotkał nieoczekiwany stan, który uniemożliwił mu wykonanie żądania. Ten błąd jest
zwykle zwracany przez serwer, gdy żaden inny kod błędu nie jest odpowiedni.
Komunikaty o błędach
Aplikacja kliencka otrzymuje ten kod odpowiedzi:
HTTP/1.1 500 Internal Server Error
Dodatkowo możesz zobaczyć komunikat o błędzie podobny do tego poniżej:
Próbka 1
Przykładowa odpowiedź serwera backendu 1
{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}Próbka 2
Przykładowa odpowiedź serwera backendu 2
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
Możliwe przyczyny
500 Internal Server Error może być zwracany przez serwer backendu z wielu powodów. Z tego przewodnika dowiesz się, jak rozwiązywać ten
problem, wykonując typowe czynności, niezależnie od jego przyczyny.
Możliwe przyczyny tego problemu:
| Przyczyna | Opis | Instrukcje rozwiązywania problemów, które mają zastosowanie do |
|---|---|---|
| Błąd na serwerze backendu | Serwer backendu może z jakiegoś powodu ulec awarii. | Użytkownicy chmury prywatnej i publicznej Edge |
Typowe czynności diagnostyczne
Aby zdiagnozować ten błąd, użyj jednego z tych narzędzi lub metod:
Monitorowanie interfejsów API
Procedura 1. Używanie monitorowania interfejsów API
Aby zdiagnozować błąd za pomocą monitorowania interfejsów API:
- Zaloguj się w interfejsie Apigee Edge jako użytkownik z odpowiednią rolą.
Przejdź do organizacji, w której chcesz zbadać problem.
- Otwórz stronę Analiza > Monitorowanie interfejsów API > Zbadaj.
- Wybierz konkretny przedział czasu, w którym wystąpiły błędy.
Wykreśl Kod błędu względem Czasu.
Wybierz komórkę z kodem błędu
messaging.adaptors.http.flow.ErrorResponseCodejak pokazano poniżej:
Informacje o kodzie błędu
messaging.adaptors.http.flow.ErrorResponseCodesą wyświetlane jak poniżej:
Kliknij Wyświetl logi i rozwiń wiersz nieudanego żądania.
- W oknie Logi zanotuj te informacje:
- Identyfikator wiadomości żądania
- Kod stanu:
500 - Źródło błędu:
target - Kod błędu:
messaging.adaptors.http.flow.ErrorResponseCode
Śledzenie
Procedura 2. Używanie narzędzia Trace
Aby zdiagnozować błąd za pomocą narzędzia Trace:
- Włącz sesję śledzenia i wykonaj jedną z tych czynności:
- Poczekaj na wystąpienie błędu
500 Internal Server Errorz kodem błędumessaging.adaptors.http.flow.ErrorResponseCode. - Jeśli możesz odtworzyć problem, wywołaj interfejs API, aby odtworzyć problem
500 Internal Server Error
- Poczekaj na wystąpienie błędu
Sprawdź, czy jest włączona opcja Pokaż wszystkie informacje o przepływach:

- Wybierz jedno z nieudanych żądań i sprawdź ślad.
- Przejdź przez różne etapy śledzenia i znajdź miejsce, w którym wystąpił błąd.
Błąd zwykle występuje w przepływie po etapie Odpowiedź odebrana z serwera docelowego jak pokazano poniżej:

- W śladzie przejdź do etapu AX (Zapisane dane Analytics) i kliknij go.
Przewiń w dół do sekcji Szczegóły etapu Nagłówki odpowiedzi i określ wartości X-Apigee-fault-code i X-Apigee-fault-source oraz X-Apigee-Message-ID jak pokazano poniżej:

- Zanotuj wartości X-Apigee-fault-code, X-Apigee-fault-source, i X-Apigee-Message-ID:
| Nagłówki odpowiedzi | Wartość |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedura 3. Używanie logów dostępu NGINX
Aby zdiagnozować błąd za pomocą logów dostępu NGINX:
- Jeśli jesteś użytkownikiem chmury prywatnej, możesz użyć logów dostępu NGINX, aby określić
kluczowe informacje o błędzie HTTP
500 Internal Server Error. Sprawdź logi dostępu NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Sprawdź, czy w określonym czasie (jeśli problem wystąpił w przeszłości) występują błędy
500z kodem błędumessaging.adaptors.http.flow.ErrorResponseCodelub czy nadal występują żądania, które kończą się niepowodzeniem z kodem500. Jeśli znajdziesz błędy
500z X-Apigee-fault-code pasującym do wartościmessaging.adaptors.http.flow.ErrorResponseCode, określ wartość X-Apigee-fault-source.Przykładowy błąd 500 z logu dostępu NGINX:
Powyższy przykładowy wpis z logu dostępu NGINX ma te wartości dla X-Apigee-fault-code i X-Apigee-fault-source:
Nagłówki Wartość X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
Przyczyna: błąd na serwerze backendu
Diagnostyka
Błąd 500 Internal Server Error zwracany przez serwer backendu może być
spowodowany wieloma przyczynami. Każdą sytuację musisz zdiagnozować osobno.
- Określ kod błędu i źródło błędu zaobserwowanego błędu za pomocą monitorowania interfejsów API, narzędzia Trace lub logów dostępu NGINX zgodnie z opisem w sekcji Typowe czynności diagnostyczne.
- Jeśli źródło błędu to
target, a kod błędu tomessaging.adaptors.http.flow.ErrorResponseCode, oznacza to, że błąd jest zwracany przez serwer backendu. - Aby zdiagnozować przyczynę problemu, możesz wykonać jedną z tych czynności:
Śledzenie
Używanie narzędzia Trace:
Jeśli masz sesję śledzenia dotyczącą niepowodzenia, wykonaj te czynności:
- W śladzie wybierz żądanie do interfejsu API, które zakończyło się niepowodzeniem z powodu błędu
500 Internal Server Error. W nieudanym żądaniu do interfejsu API wybierz etap Odpowiedź odebrana z serwera docelowego jak pokazano na ilustracji poniżej:
Przewiń w dół do sekcji Szczegóły etapu i sprawdź Treść odpowiedzi,która zawiera odpowiedź z serwera backendu.
Przykładowa treść odpowiedzi:
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
W powyższej odpowiedzi zwróć uwagę, że komunikat o błędzie z serwera backendu to Not Authorised (Brak autoryzacji). Oznacza to, że użytkownik mógł podać nieprawidłowe dane logowania i dlatego występuje ten błąd.
Wywołaj serwer backendu
Bezpośrednie wywołanie serwera backendu:
Możesz bezpośrednio wywołać serwer backendu i:
- Sprawdź, czy otrzymujesz tę samą
500 Internal Server Errorodpowiedź co wtedy, gdy żądanie zostało wysłane przez Apigee Edge. - Sprawdź komunikat o błędzie (odpowiedź) otrzymany z serwera backendu.
Aby bezpośrednio wywołać serwer backendu, wykonaj te czynności:
- Upewnij się, że masz wszystkie wymagane nagłówki, parametry zapytania i wszelkie dane uwierzytelniające, które należy przekazać 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
500 Internal Server Error, i sprawdź komunikat o błędzie (odpowiedź) zwrócony przez serwer backendu, aby określić przyczynę tego błędu.
Logi serwera backendu
Używanie logów serwera backendu
- Sprawdź logi serwera backendu i spróbuj uzyskać więcej informacji o błędzie i jego przyczynie.
- Jeśli to możliwe, włącz tryb debugowania na serwerze backendu, aby uzyskać więcej szczegółów o błędzie i jego przyczynie.
- W śladzie wybierz żądanie do interfejsu API, które zakończyło się niepowodzeniem z powodu błędu
Sprawdź, czy w konkretnym punkcie końcowym docelowym nieudanego proxy interfejsu API używasz łańcucha proxy, czyli czy serwer docelowy lub punkt końcowy docelowy wywołuje inne proxy w Apigee Edge. Aby to sprawdzić:
Jeśli masz ślad nieudanego żądania, przejdź do etapu Żądanie wysłane do serwera docelowego i kliknij Pokaż Curl.
- Otworzy się okno Curl for Request Sent to Target Server (Curl dla żądania wysłanego do serwera docelowego), w którym możesz określić alias hosta serwera docelowego.
- Sprawdź punkt końcowy docelowy proxy interfejsu API i sprawdź, czy adres URL serwera backendu lub nazwa hosta na serwerze docelowym wskazuje inne proxy lub Twój serwer backendu.
- Jeśli alias hosta serwera docelowego wskazuje alias hosta wirtualnego, jest to
łańcuch proxy. W takim przypadku musisz powtórzyć wszystkie powyższe czynności w przypadku proxy w łańcuchu, aż ustalisz, co powoduje błąd
500 Internal Server Error. W takich przypadkach500 Internal Server Errormoże wystąpić też na innych etapach w innych proxy w łańcuchu. Możesz go zdiagnozować i rozwiązać, korzystając z instrukcji podanych w tym przewodniku lub w przewodniku 500 Wewnętrzny błąd serwera. - Jeśli alias hosta serwera docelowego wskazuje Twój serwer backendu, przejdź do sekcji Rozwiązanie.
Rozdzielczość
Jeśli stwierdzisz, że błąd 500 pochodzi z serwera backendu, wówczas
współpracuj z zespołem serwera backendu, aby odpowiednio rozwiązać ten problem.
W omówionym powyżej przykładzie, aby rozwiązać ten problem, możesz poprosić użytkowników o podanie prawidłowych danych logowania.
Ważne uwagi
- Rzeczywisty komunikat o błędzie zwracany przez serwer backendu w przypadku błędu
500 Internal Server Errormożna wyświetlić tylko wtedy, gdy masz sesję śledzenia dotyczącą nieudanych żądań. - Ze względów bezpieczeństwa odpowiedź serwera backendu nie będzie rejestrowana w monitorowaniu interfejsów API, logach dostępu NGINX ani w logach procesora komunikatów.
- Aby uzyskać więcej
informacji o
500 Internal Server Errorlub wyświetlić komunikat o błędzie zwrócony przez serwer backendu, możesz sprawdzić logi serwera backendu lub włączyć na nim tryb debugowania.
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 Edge.
Jeśli jesteś użytkownikiem chmury publicznej, podaj te informacje:
- Nazwa organizacji
- Nazwa środowiska
- Nazwa proxy interfejsu API
- Pełne polecenie
curl, aby odtworzyć błąd500 - Plik śledzenia zawierający żądania z
500 Internal Server Error - Jeśli błędy
500nie występują obecnie, podaj przedział czasu z informacjami o strefie czasowej, w którym błędy500występowały w przeszłości.
Jeśli jesteś użytkownikiem 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ą
500błędy - Pakiet proxy interfejsu API
- Plik śledzenia zawierający żądania z
500 Internal Server Error - Logi dostępu NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logGdzie: ORG, ENV, i PORT# są zastępowane rzeczywistymi wartościami.
- Logi systemowe procesora komunikatów
/opt/apigee/var/log/edge-message-processor/logs/system.log - Przedział czasu z informacjami o strefie czasowej, w którym wystąpiły błędy
500.