Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację
Apigee X. info
Krótki opis problemu
Aplikacja kliencka otrzymuje kod stanu HTTP 504 z komunikatem "Gateway Timeout" w odpowiedzi na wywołania interfejsu API.
Ta odpowiedź o błędzie oznacza, że podczas wykonywania wywołania interfejsu API klient nie otrzymał odpowiedzi od Apigee Edge lub serwera backendu w odpowiednim czasie.
Komunikat o błędzie
Aplikacja kliencka otrzymuje ten kod odpowiedzi:
HTTP/1.1 504 Gateway Timeout
Po tym kodzie może pojawić się komunikat o błędzie podobny do tego:
<html> <head><title>504 Gateway Timeout</title></head> <body bgcolor="white"> <center><h1>504 Gateway Timeout</h1></center> </body> </html>
Co jest przyczyną przekroczenia limitu czasu bramy?
Typowa ścieżka żądania do interfejsu API wysyłanego przez Apigee Edge to Klient -> Router -> Procesor komunikatów -> Serwer backendu, jak pokazano na ilustracji poniżej:

Aplikacja kliencka, routery i procesory komunikatów są skonfigurowane z odpowiednimi wartościami limitu czasu. Apigee Edge oczekuje odpowiedzi na każde żądanie do interfejsu API w określonym czasie na podstawie wartości limitu czasu. Jeśli odpowiedź nie zostanie odebrana w określonym czasie, zwracana jest odpowiedź 504 Gateway Timeout.
Możliwe przyczyny
W Apigee Edge typową przyczyną odpowiedzi 504 Gateway Timeout z serwera backendu jest:
| Przyczyna | Opis | Instrukcje rozwiązywania problemów dla |
|---|---|---|
| Serwer backendu odpowiada kodem 504 Gateway Timeout | Serwer backendu przekracza limit czasu i zwraca do procesora komunikatów odpowiedź 504 Gateway Timeout. | Użytkownicy chmury prywatnej i publicznej Edge |
Serwer backendu odpowiada kodem 504 Gateway Timeout
Serwer backendu może odpowiedzieć kodem odpowiedzi HTTP 504 Gateway Timeout.
Diagnostyka
Z tej sekcji dowiesz się, jak prawidłowo zdiagnozować błąd 504 Gateway Timeout. Podane są procedury dla użytkowników chmury prywatnej i publicznej.
Procedura 1. Korzystanie z narzędzia Trace (użytkownicy chmury prywatnej i publicznej)
- Włącz narzędzie Trace w interfejsie Apigee dla interfejsu API, którego dotyczy problem.
- Wyślij żądanie do serwera backendu.
- Jeśli w narzędziu Trace nieudane żądanie do interfejsu API pokazuje odpowiedź 504 z serwera backendu, przyczyną błędu 504 Gateway Timeout jest serwer backendu.
- Aby określić czas odpowiedzi, kliknij fazę Response received from target server
(Odpowiedź odebrana z serwera docelowego) w narzędziu Trace. W pokazanym przykładzie czas, który upłynął, to 60004 ms:

Więcej informacji znajdziesz w sekcji Szczegóły fazy:
- Wyróżnia ona odpowiedź 504 Gateway Timeout otrzymaną z serwera backendu.
- W sekcji Response Content (Treść odpowiedzi) wyświetla się pełna treść odpowiedzi z serwera backendu. Jak wspomnieliśmy wcześniej, format i treść ładunku odpowiedzi mogą się różnić w zależności od implementacji serwera backendu.
- Sekcja Response Header > Server (Nagłówek odpowiedzi > Serwer) może wskazywać, skąd pochodzi odpowiedź.
- Aby wyświetlić dane Analytics i potwierdzić diagnozę, kliknij fazę Analytics Data Recorded
(Zapisane dane Analytics) w narzędziu Trace, jak pokazano na ilustracji poniżej:

W sekcji Response Headers (Nagłówki odpowiedzi) w sekcji Szczegóły fazy wyświetlają się wartości
X-Apigee-fault-codeiX-Apigee-fault-source, jak pokazano na ilustracji poniżej:
Jeśli te pola zawierają wartości pokazane w tabeli poniżej, odpowiedź o błędzie 504 pochodzi z serwera backendu:
Nagłówki odpowiedzi Wartość X-Apigee-fault-source cel X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
Sprawdź, czy nie występuje
łączenie proxy. Aby sprawdzić, czy serwer backendu wywołuje inne proxy
w Apigee:
- Wróć do fazy Request sent to target server (Żądanie wysłane do serwera docelowego) i kliknij przycisk Show Curl (Pokaż Curl), aby wyświetlić alias hosta serwera backendu.
- Jeśli alias hosta serwera backendu wskazuje alias hosta wirtualnego, oznacza to, że występuje łączenie proxy. Powtórz powyższe kroki w przypadku każdego połączonego proxy, aby zdiagnozować przyczynę odpowiedzi o błędzie 504 Gateway Timeout. Błędy 504 Gateway Timeout występujące w połączonych proxy na innych etapach cyklu żądania/odpowiedzi można zdiagnozować za pomocą tego przewodnika.
- Jeśli alias hosta serwera backendu wskazuje serwer backendu, przejdź do sekcji Rozwiązanie.
Procedura 2. Bezpośrednie wywołanie interfejsu API serwera backendu (użytkownicy chmury publicznej i prywatnej)
Zadzwoń bezpośrednio na serwer backendu, aby potwierdzić to samo zachowanie odpowiedzi 504 Gateway Timeout, które występuje gdy żądanie jest wysyłane przez Apigee Edge.
- Upewnij się, że masz wszystkie wymagane nagłówki, parametry zapytania i dane logowania, które musisz przekazać do serwera backendu w ramach żądania.
- Jeśli usługa backendu jest dostępna publicznie, 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, użyj polecenia
curl, Postmana lub innego klienta REST, aby bezpośrednio wywołać interfejs API serwera backendu z procesora komunikatów. - Jeśli usługa backendu zwraca odpowiedź 504 Gateway Timeout, przejdź do sekcji Rozwiązanie.
Procedura 3. Sprawdź logi dostępu NGINX (tylko użytkownicy chmury prywatnej)
Logi dostępu NGINX mogą pomóc określić, czy odpowiedź o błędzie 504 została wysłana przez serwer backendu. Jest to szczególnie przydatne, jeśli problem wystąpił w przeszłości, występuje sporadycznie lub nie można go zarejestrować w narzędziu Trace. Aby sprawdzić logi dostępu NGINX, wykonaj te czynności:
- Wyświetl logi dostępu NGINX za pomocą tego polecenia:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- Sprawdź, czy nie ma odpowiedzi o błędzie 504 w przypadku proxy interfejsu API, którego dotyczy problem. Możesz sprawdzić określony okres, jeśli problem wystąpił w przeszłości, lub określić, czy żądania nadal kończą się niepowodzeniem z powodu odpowiedzi o błędzie 504.
- Jeśli występują odpowiedzi o błędzie 504, sprawdź, czy pochodzą one z serwera backendu.
- Sprawdź proxy interfejsu API, którego dotyczy problem, aby sprawdzić, czy nie występuje łączenie proxy czyli czy serwer backendu lub punkt końcowy docelowy wywołuje inne proxy w Apigee. Jeśli proxy interfejsu API używa łączenia proxy , powtórz powyższe kroki w przypadku każdego połączonego proxy, aby zdiagnozować przyczynę odpowiedzi o błędzie 504 Gateway Timeout. Błędy 504 Gateway Timeout występujące w połączonych proxy na innych etapach można zdiagnozować za pomocą tego przewodnika.
- Jeśli nie występuje łączenie proxy, a odpowiedź o błędzie 504 pochodzi z serwera backendu, przejdź do sekcji Rozwiązanie.
Ilustracja poniżej przedstawia przykład wpisu logu NGINX, który pokazuje odpowiedź o błędzie 504 spowodowaną przez serwer docelowy:

Jeśli pola X-Apigee-fault-source i X-Apigee-fault-code zawierają
wartości pokazane w tabeli poniżej, odpowiedź 504 pochodzi z serwera backendu:
| Nagłówki odpowiedzi | Wartość |
|---|---|
| X-Apigee-fault-source | cel |
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
Procedura 4. Korzystanie z monitorowania interfejsu API (tylko użytkownicy chmury publicznej)
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, np. aplikacji deweloperów, proxy interfejsu API, celów backendu lub platformy interfejsu API.
Zapoznaj się z przykładowym scenariuszem który pokazuje, jak rozwiązywać problemy z kodami 5xx w interfejsach API za pomocą monitorowania interfejsu API. Na przykład, skonfiguruj alert, który będzie powiadamiał administratorów, gdy liczba kodów stanu 504 przekroczy określony próg.
Rozdzielczość
Korzystając z opisanych powyżej procedur diagnostycznych, możesz współpracować z zespołem serwera backendu, aby rozwiązać problem na serwerze backendu. Może to obejmować dostosowanie limitów czasu na serwerach backendu lub limitów czasu w przypadku modułów równoważenia obciążenia znajdujących się przed serwerami docelowymi.
Zbieranie informacji diagnostycznych
Jeśli problem nadal występuje, udostępnij zespołowi pomocy Apigee te informacje diagnostyczne.
Jeśli korzystasz z chmury publicznej, podaj te informacje:
- Nazwa organizacji
- Nazwa środowiska
- Nazwa proxy interfejsu API
- Pełne
curlpolecenie użyte do odtworzenia odpowiedzi o błędzie 504 - Plik śledzenia z żądaniami do interfejsu API, które otrzymują odpowiedź o błędzie 504 Gateway Timeout
Jeśli korzystasz z chmury prywatnej, podaj te informacje:
- Pełny komunikat o błędzie zaobserwowany w przypadku nieudanych żądań
- Nazwa środowiska
- Pakiet proxy interfejsu API
- Plik śledzenia z żądaniami do interfejsu API, które otrzymują odpowiedź o błędzie 504 Gateway Timeout
- 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