Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Filmy
Wideo | Opis |
---|---|
500 Wewnętrzny błąd serwera – spowodowany przez backend | Demonstracja 500 Internal Server Error w czasie rzeczywistym wywołana przez serwer backendu wraz z instrukcjami rozwiązywania problemów. |
Krótki opis problemu
Aplikacja kliencka otrzymuje kod stanu HTTP 500
z komunikatem
Internal Server Error
jako odpowiedź na wywołania interfejsu API.
Kod stanu HTTP 500
to ogólna odpowiedź na błąd. Oznacza to, że serwer
wystąpił nieoczekiwany warunek, który uniemożliwił mu zrealizowanie żą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
Możesz też zobaczyć komunikat o błędzie podobny do tego poniżej:
Przykład 1
Przykładowa odpowiedź serwera backendu 1
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
Przykład 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
Serwer backendu może zwrócić wartość 500 Internal Server Error
z powodu błędu
wiele przyczyn. Z tego poradnika dowiesz się, jak rozwiązywać problemy za pomocą typowych czynności.
niezależnie od jego przyczyny.
Możliwe przyczyny tego problemu:
Przyczyna | Opis | Instrukcje rozwiązywania problemów dotyczące |
---|---|---|
Błąd na serwerze backendu | Z jakiegoś powodu serwer backendu może ulec awarii. | Użytkownicy Edge Private Cloud i użytkownicy chmury publicznej |
Typowe kroki diagnostyki
Użyj jednego z tych narzędzi lub metod, aby zdiagnozować ten błąd:
Monitorowanie interfejsów API
Procedura 1. Korzystanie z monitorowania interfejsów API
Aby zdiagnozować błąd za pomocą monitorowania interfejsów API:
- Zaloguj się w interfejsie Apigee Edge jako użytkownik z uprawnieniami odpowiednią rolę.
Przełącz się na organizację, w której chcesz zbadać problem.
- Przejdź do przycisku Analiza > Monitorowanie interfejsów API > Zbadaj stronę.
- Wybierz okres, w którym zaobserwowano błędy.
Porównaj Kod błędu z czasem.
Wybierz komórkę, która zawiera kod błędu
messaging.adaptors.http.flow.ErrorResponseCode
jak pokazano na ekranie poniżej:Informacje o kodzie błędu
messaging.adaptors.http.flow.ErrorResponseCode
jest wyświetlany jako poniżej:Kliknij Wyświetl logi i rozwiń wiersz nieudanego żądania.
- W oknie Logi zwróć uwagę na te informacje:
- Request Message ID (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 śledzenia
Aby zdiagnozować błąd za pomocą narzędzia śledzenia:
- Włącz sesję śledzenia i wykonaj jedną z tych czynności:
- Poczekaj na pojawienie się błędu
500 Internal Server Error
z kodem błędumessaging.adaptors.http.flow.ErrorResponseCode
lub - Jeśli możesz odtworzyć problem, wykonaj wywołanie interfejsu API, aby odtworzyć problem.
500 Internal Server Error
- Poczekaj na pojawienie się błędu
Sprawdź, czy opcja Show all FlowInfos jest włączona:
- Wybierz jedno z nieudanych żądań i sprawdź log czasu.
- Przejdź przez różne fazy śledzenia i znajdź miejsca, w których wystąpił błąd.
Błąd pojawia się zwykle w ciągu po odpowiedzi odebranej z serwera docelowego. faza, jak poniżej:
- Przejdź do fazy AX (zarejestrowane dane Analytics) i kliknij ją.
Przewiń w dół do sekcji Phase Details Response Headers (Nagłówki odpowiedzi szczegółów etapu) i określ wartości X-Apigee-fault-code i X-Apigee-fault-source; X-Apigee-Message-ID zgodnie z poniższym przykładem:
- Zwróć uwagę na 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 przy użyciu logów dostępu NGINX:
- Jeśli jesteś użytkownikiem Private Cloud, możesz użyć logów dostępu NGINX, aby określić
Kluczowe informacje o HTTP
500 Internal Server Error
. Sprawdź logi dostępu NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Wyszukaj błędy (
500
) z kodem błędumessaging.adaptors.http.flow.ErrorResponseCode
w określonym czasie (jeśli problem wystąpił w wcześniejsze) lub jeśli jakieś żądania z usługą500
nadal kończą się niepowodzeniem. Jeśli znajdziesz błędy
500
w dopasowaniu X-Apigee-fault-code wartośćmessaging.adaptors.http.flow.ErrorResponseCode
, a następnie określić wartość źródła X-Apigee-fault-source..Przykładowy błąd 500 z dziennika dostępu NGINX:
Powyższy przykładowy wpis z logu dostępu NGINX zawiera następujące wartości dla: X-Apigee-fault-code i X-Apigee-fault-code
Nagłówki Wartość X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
Przyczyna: błąd na serwerze backendu
Diagnostyka
Pole 500 Internal Server Error
, na które odpowiada serwer backendu, może być
z różnych przyczyn. Każdą sytuację należy diagnozować z osobna.
- Określ kod błędu, źródło błędu dla błędu zaobserwowanego za pomocą monitorowania interfejsów API. narzędzia śledzenia lub dzienników dostępu NGINX, zgodnie z opisem w częstych krokach diagnostyki.
- Jeśli Źródło błędu to
target
, a Kod błędu –messaging.adaptors.http.flow.ErrorResponseCode
, oznacza to, że serwer backendu zwraca błąd. - Aby zdiagnozować przyczynę problemu, wykonaj jedną z tych czynności:
Śledzenie
Za pomocą logu czasu:
Jeśli masz sesję śledzenia błędu, wykonaj te czynności:
- W logu czasu wybierz żądanie do interfejsu API, którego nie udało się zrealizować
500 Internal Server Error
Wybierz etap Odpowiedź otrzymana z serwera docelowego z nieudane żądanie API, jak widać na ilustracji poniżej:
Przewiń w dół do sekcji Etapy 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ę na komunikat o błędzie serwera backendu Brak autoryzacji. Oznacza to, że użytkownik mógł przesłać nieprawidłowe dane danych logowania i dlatego pojawia się ten błąd.
Serwer backendu połączeń
Bezpośrednie wywołanie serwera backendu:
Możesz bezpośrednio wywołać serwer backendu i:
- Sprawdź, czy otrzymujesz tę samą wartość
500 Internal Server Error
odpowiedź jako odebrana, gdy żądanie zostało przesłane za pomocą Apigee Edge - Sprawdź komunikat o błędzie (odpowiedź) odebrany 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 dane uwierzytelniające, które należy przekazać do serwera backendu w ramach żądania.
- Jeśli usługa backendu jest dostępna publicznie, możesz używać
curl
, Postman lub dowolnego innego klienta REST i wywołaj metodę lub interfejs API serwera backendu. Jeśli serwer backendu jest dostępny tylko z procesora wiadomości, możesz za pomocą polecenia
curl
, Postman lub innego klienta REST i wywołaj metodę API serwera backendu bezpośrednio z procesora wiadomości.- Sprawdź, czy usługa backendu rzeczywiście zwraca kod
500 Internal Server Error
, i sprawdź komunikat o błędzie (odpowiedź) zwrócony przez serwer backendu i 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 oraz przyczyna.
- Jeśli to możliwe, włącz tryb debugowania na serwerze backendu, aby uzyskać więcej informacji o błędzie i przyczynie.
- W logu czasu wybierz żądanie do interfejsu API, którego nie udało się zrealizować
Sprawdź, czy używasz łańcuch serwerów proxy w określonym docelowym punkcie końcowym serwera proxy interfejsu API, w którym wystąpiła awaria; czyli jeśli serwer docelowy/docelowy punkt końcowy wywołuje inny serwer proxy Apigee Edge Aby to sprawdzić:
Jeśli masz ślad nieprawidłowego żądania, przejdź do sekcji Żądanie wysłane do etapu docelowego serwera i kliknij Pokaż skręt.
- Otworzy się okno Curl for Request Sent to Target Server (Adres URL żądania wysłanego do serwera docelowego), w którym może określić alias hosta serwera docelowego.
- Sprawdź docelowy punkt końcowy serwera proxy interfejsu API i sprawdź, czy serwer backendu URL lub nazwa hosta na serwerze docelowym wskazuje inny serwer proxy lub Twój z serwera backendu.
- Jeśli alias hosta serwera docelowego wskazuje alias hosta wirtualnego,
jest łańcuch serwerów proxy. W takim przypadku musisz powtórzyć wszystkie powyższe kroki, aby
łańcuchowy serwer proxy, dopóki nie ustalisz, co tak naprawdę jest przyczyną żądania
500 Internal Server Error
. W takich przypadkach500 Internal Server Error
może występują w innych łańcuchowych serwerach proxy na innych etapach, które mogą być zdiagnozowane i można rozwiązać, korzystając z instrukcji podanych w tym poradniku lub w Poradnik dotyczący błędu wewnętrznego serwera 500. - Jeśli alias hosta serwera docelowego wskazuje Twój serwer backendu, otwórz Rozwiązanie.
Rozdzielczość
Jeśli masz pewność, że błąd 500
pochodzi z serwera backendu,
skontaktuj się z zespołem serwera backendu, aby rozwiązać problem.
W przykładzie powyżej może być konieczne poproszenie użytkowników o przekazanie prawidłowych danych logowania, aby rozwiązać problem. tego problemu.
Najważniejsze kwestie
- Rzeczywisty komunikat o błędzie zwrócony przez serwer backendu dla
500 Internal Server Error
można wyświetlić tylko wtedy, gdy zarejestrujesz sesję śledzenia dla błędu żądań. - Odpowiedź serwera backendu nie będzie rejestrowana w usłudze API Monitoring, logach dostępu NGINX ani Dzienniki procesora wiadomości ze względów bezpieczeństwa.
- Możesz przejrzeć logi serwera backendu lub włączyć tryb debugowania w backendzie, aby uzyskać więcej informacji
szczegóły błędu
500 Internal Server Error
lub wyświetl zwrócony komunikat o błędzie przez serwer backendu.
Musi zbierać informacje diagnostyczne
Jeśli po wykonaniu powyższych czynności problem nie ustąpi, zwróć uwagę na informacje diagnostyczne i skontaktuj się z zespołem pomocy Apigee Edge.
Jeśli jesteś użytkownikiem Public Cloud, podaj te informacje:
- Nazwa organizacji
- Nazwa środowiska
- Nazwa serwera proxy interfejsu API
- Wykonaj polecenie
curl
, aby odtworzyć błąd500
- Plik śledzenia zawierający żądania za pomocą funkcji
500 Internal Server Error
- Jeśli błędy typu
500
nie występują obecnie, podaj czas okres z informacjami o strefie czasowej, gdy w przeszłości wystąpiły błędy500
.
Jeśli jesteś użytkownikiem Private Cloud, podaj te informacje:
- Pełny komunikat o błędzie zaobserwowany dla nieudanych żądań
- Organizacja, nazwa środowiska i nazwa serwera proxy interfejsu API, które obserwujesz
500
błędu - Pakiet serwerów proxy interfejsu API
- Plik śledzenia zawierający żądania za pomocą funkcji
500 Internal Server Error
- Logi dostępu NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Gdzie: ORG, ENV i PORT# są zastępowane wartościami rzeczywistymi.
- Logi systemowe procesora wiadomości
/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
.