504 Przekroczony limit czasu bramy z serwera backendu

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Krótki opis problemu

Aplikacja kliencka otrzymuje kod stanu HTTP 504 z komunikatem „Przekroczenie limitu czasu bramy” w odpowiedzi na wywołania interfejsu API.

Ta odpowiedź błędu oznacza, że podczas wykonywania wywołania interfejsu API klient nie otrzymał na czas odpowiedzi z Apigee Edge lub serwera backendu.

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 poniżej:

<html>
<head><title>504 Gateway Timeout</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Timeout</h1></center>
</body>
</html>

Co powoduje przekroczenie czasu oczekiwania bramy?

Typowa ścieżka dla żądania do interfejsu API wysyłanego za pomocą Apigee Edge to Klient -> Router -> Procesor wiadomości -> Serwer backendu, tak jak na ilustracji poniżej:

Ścieżka żądania API

Aplikacja kliencka, routery i procesory wiadomości są skonfigurowane z odpowiednimi wartościami czasu oczekiwania. Apigee Edge oczekuje odpowiedzi na każde żądanie interfejsu API w danym okresie na podstawie wartości limitu czasu. Jeśli odpowiedź nie zostanie odebrana w określonym przedziale czasu, zwracana jest odpowiedź 504 Przekroczenie limitu czasu bramy.

Możliwe przyczyny

W Apigee Edge typowa przyczyna błędu 504 w odpowiedzi z serwera backendu w przypadku przekroczenia limitu czasu oczekiwania to:

Przyczyna Opis Instrukcje rozwiązywania problemów z
Serwer backendu odpowiada z przekroczeniem limitu czasu bramy 504 Upłynął limit czasu serwera backendu i zwraca on do procesora wiadomości odpowiedź 504 Przekroczenie limitu czasu bramy. Użytkownicy chmury prywatnej i publicznej na serwerach brzegowych

Serwer backendu odpowiada z przekroczeniem limitu czasu bramy 504

Serwer backendu może odpowiedzieć z kodem odpowiedzi HTTP 504 Przekroczenie limitu czasu bramy.

Diagnostyka

W tej sekcji wyjaśniono, jak poprawnie diagnozować limit czasu bramy 504. Procedury w przypadku podmiotów prywatnych i Zostaną wyświetlone użytkownicy Public Cloud Cloud.

Procedura 1. Używanie śledzenia (użytkownicy chmury prywatnej i publicznej)

  1. Włącz Trace w interfejsie Apigee dla odpowiedniego interfejsu API.
  2. Wyślij żądanie do serwera backendu.
  3. Jeśli nieudane żądanie do interfejsu API wyświetla w Trace odpowiedź 504 z serwera backendu, przyczyną błędu 504 Przekroczenie limitu czasu bramy jest serwer backendu.
  4. Aby określić czas odpowiedzi, kliknij Odpowiedź otrzymana z serwera docelowego. w Trace. W tym przykładzie czas trwania wynosi 60 004 ms:

    szczegóły etapu w interfejsie użytkownika

    Sekcja Szczegóły etapu zawiera dodatkowe informacje:

    • Zostanie wyróżniona odpowiedź 504 Przekroczenie limitu czasu bramy odebrana z serwera backendu.
    • W sekcji Treść odpowiedzi wyświetlana jest pełna treść odpowiedzi z pola z serwera backendu. Jak już wspomnieliśmy, format i zawartość ładunku odpowiedzi mogą się różnić. na podstawie implementacji serwera backendu.
    • Nagłówek odpowiedzi > Sekcja Server może wskazywać, skąd pochodzi odpowiedź.
  5. Aby wyświetlić dane Analytics i potwierdzić diagnozę, kliknij Rejestrowane dane Analytics. fazy systemu Trace, jak widać na ilustracji poniżej:

    szczegóły statystyk ze logu czasu

    W sekcji Nagłówki odpowiedzi w szczegółach etapu wyświetlane są wartości X-Apigee-fault-code i X-Apigee-fault-source, jak widać w ilustrację poniżej:

    szczegóły etapów analiz w interfejsie

    Jeśli te pola zawierają wartości podane w tabeli poniżej, oznacza to, że odpowiedź dotycząca błędu 504 jest z serwera backendu:

    Nagłówki odpowiedzi Wartość
    X-Apigee-fault-source cel
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  6. Sprawdź łańcuch serwerów proxy. Aby sprawdzić, czy serwer backendu wywołuje inny serwer proxy, wykonaj te czynności W Apigee:
    1. Wróć do etapu Żądanie wysłane do serwera docelowego i kliknij Pokaż przycisk Curl, aby wyświetlić alias hosta serwera backendu.
    2. Jeśli alias hosta serwera backendu wskazuje alias hosta wirtualnego, łańcuch serwerów proxy jest miejsce. Powtórz powyższe kroki dla każdego łańcuchowego serwera proxy, aby zdiagnozować przyczynę bramy 504. Odpowiedź błędu przekroczenia limitu czasu. 504 Limity czasu bramy występujące w łańcuchowych serwerach proxy na innych etapach cykl żądań/odpowiedzi można zdiagnozować za pomocą funkcji ten poradnik.
    3. Jeśli alias hosta serwera backendu wskazuje serwer backendu, przejdź do Rozwiązanie.

Procedura 2. Wywołaj bezpośrednio interfejs API serwera backendu (użytkownicy chmury publicznej i prywatnej)

Wywołaj bezpośrednio serwer backendu, aby potwierdzić to samo, co napotkano w odpowiedzi na żądanie przekroczenia limitu czasu oczekiwania bramy 504 gdy żądanie jest wysyłane przez Apigee Edge.

  1. Sprawdź, czy masz wszystkie wymagane nagłówki, parametry zapytania i dane logowania potrzebne do do serwera backendu w ramach żądania.
  2. Jeśli usługa backendu jest dostępna publicznie, możesz użyć polecenia curl, Postmana lub innego klienta REST i bezpośrednio wywołaj interfejs API serwera backendu.
  3. Jeśli serwer backendu jest dostępny tylko z poziomu procesorów wiadomości, użyj metody curl , Postman lub innym klientem REST, który wywoła interfejs API serwera backendu bezpośrednio z poziomu Procesor komunikatów.
  4. Jeśli usługa backendu zwraca odpowiedź 504 Przekroczenie limitu czasu bramy, przejdź do Rozwiązanie.

Procedura 3. Sprawdź logi dostępu NGINX (tylko użytkownicy Private Cloud)

Logi dostępu NGINX mogą pomóc w określeniu, czy odpowiedź z błędem 504 została wysłana przez serwer backendu. Jest to szczególnie przydatne, jeśli problem wystąpił w przeszłości, jest przejściowy lub nie można go zarejestrować w Trace. Aby sprawdzić logi dostępu NGINX, wykonaj te czynności:

  1. Wyświetl logi dostępu NGINX za pomocą tego polecenia:
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. Sprawdź, czy w przypadku serwera proxy interfejsu API, którego dotyczy problem, nie ma odpowiedzi na błąd 504. Możesz wybrać konkretny przedział czasu, , czy problem wystąpił w przeszłości lub czy żądania nadal kończą się niepowodzeniem, wyświetlając błąd 504.
  3. Jeśli pojawią się odpowiedzi na błędy 504, sprawdź, czy pochodzą one z z serwera backendu.
  4. Na ilustracji poniżej widać przykład wpisu logu NGINX z odpowiedzią na błąd 504 wywołaną przez serwer docelowy:

    przykładowe logi nginx

    Jeśli pola X-Apigee-fault-source i X-Apigee-fault-code zawierają wartości widoczne w tabeli poniżej oznaczają, że odpowiedź 504 pochodzi z serwera backendu:

    Nagłówki odpowiedzi Wartość
    X-Apigee-fault-source cel
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  5. Sprawdź serwer proxy interfejsu API, którego dotyczy problem, i sprawdź, czy występuje łańcuch serwerów proxy. tzn. serwer backendu lub docelowy punkt końcowy wywołuje inny serwer proxy w Apigee. Jeśli serwer proxy interfejsu API to przy użyciu łańcucha serwerów proxy , powtórz powyższe kroki dla każdego łańcuchowego serwera proxy, aby zdiagnozować przyczynę przekroczenia limitu czasu oczekiwania bramy 504. odpowiedź na żądanie błędu. 504 Można zdiagnozować limity czasu bramy występujące w łańcuchowych serwerach proxy na innych etapach korzystając z tego poradnika.
  6. Jeśli nie ma łańcuch serwerów proxy, a odpowiedź z błędem 504 pochodzi z serwera backendu, przejdź do Rozwiązanie.

Procedura nr 4. Korzystanie z monitorowania interfejsów API (tylko użytkownicy publicznej chmury)

Monitorowanie interfejsów API umożliwia wyizolowanie problemów szybko diagnozować problemy z błędami, wydajnością i opóźnieniami oraz ich źródła, takie jak aplikacje Serwery proxy interfejsu API, cele backendu lub platforma API.

Przeanalizuj przykładowy scenariusz , który pokazuje, jak rozwiązywać problemy z kodem 5xx z interfejsami API przy użyciu monitorowania interfejsów API. Przykład: skonfigurować alert powiadamiający administratorów, gdy liczba kodów stanu 504 przekracza określony próg.

Rozdzielczość

Korzystając z opisanych wyżej procedur diagnostycznych, możesz wspólnie z zespołem serwera backendu rozwiązać problem na serwerze backendu. Może to obejmować dostosowywanie limitów czasu na serwerach backendu lub w systemach równoważenia obciążenia przed serwerami docelowymi.

Zbieranie informacji diagnostycznych

Jeśli problem będzie nadal występował, przekaż następujące informacje diagnostyczne zespołowi pomocy Apigee.

Jeśli jesteś użytkownikiem chmury publicznej, podaj te informacje:

  • Nazwa organizacji
  • Nazwa środowiska
  • Nazwa serwera proxy interfejsu API
  • Pełne polecenie curl użyte do odtworzenia odpowiedzi na błąd 504
  • Plik śledzenia z żądaniami do interfejsu API otrzymującymi odpowiedź błędu 504 Czas oczekiwania bramy

Jeśli jesteś użytkownikiem Private Cloud, podaj te informacje:

  • Pełny komunikat o błędzie zaobserwowany dla nieudanych żądań
  • Nazwa środowiska
  • Pakiet serwerów proxy API
  • Plik śledzenia, w którym żądania do interfejsu API otrzymują odpowiedź o błędzie 504 Czas oczekiwania
  • Logi dostępu NGINX
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  • Logi procesora wiadomości
    /opt/apigee/var/log/edge-message-processor/logs/system.log