504 Przekroczony limit czasu bramy z serwera backendu

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Krótki opis problemu

W odpowiedzi na wywołania interfejsu API aplikacja kliencka otrzymuje kod stanu HTTP 504 z komunikatem „Limit czasu bramy”.

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:

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

Co powoduje przekroczenia limitu czasu bramy?

Typowa ścieżka żądania interfejsu API wysyłanego za pomocą Apigee Edge to Client -> Router -> Message Processor -> Backend Server (Klient -> Router -> Procesor wiadomości -> Serwer backendu):

Ścieżka żądania do interfejsu API

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

Możliwe przyczyny

W Apigee Edge typowa przyczyna przekroczenia limitu czasu bramy 504 z serwera backendu to:

Przyczyna Opis Rozwiązywanie problemów – instrukcje
Serwer backendu odpowiada z powodu przekroczenia limitu czasu bramy 504 Upłynął limit czasu serwera backendu, co spowoduje zwrócenie odpowiedzi 504 dotyczącej limitu czasu bramy do podmiotu przetwarzającego wiadomości. Użytkownicy chmury prywatnej i publicznej Cloud

Serwer backendu odpowiada z powodu przekroczenia limitu czasu bramy 504

Serwer backendu może odpowiedzieć kodem odpowiedzi HTTP 504 „Limit czasu bramy”.

Diagnostyka

Ta sekcja zawiera informacje na temat poprawnego diagnozowania błędu 504 w przypadku przekroczenia limitu czasu bramy. Wyświetlane są procedury zarówno dla użytkowników chmury prywatnej, jak i publicznej.

Procedura 1. Korzystanie z systemu monitorowania (użytkownicy chmury prywatnej i publicznej)

  1. Włącz Trace w interfejsie Apigee dla interfejsu API, którego dotyczy problem.
  2. Wyślij żądanie do serwera backendu.
  3. Jeśli nieudane żądanie do interfejsu API zwraca w narzędziu Trace odpowiedź 504 z serwera backendu, przyczyną przekroczenia limitu czasu bramy 504 jest serwer backendu.
  4. Aby określić czas odpowiedzi, w Trace kliknij etap Odpowiedź otrzymana z serwera docelowego. W tym przykładzie czas, który upłynął, to 60 004 ms:

    szczegóły etapu z UI

    Sekcja szczegółów fazy zawiera dodatkowe informacje:

    • Wyróżnia on odpowiedź 504 Gateway Timeout (Limit czasu bramy 504) odebraną z serwera backendu.
    • Sekcja Treść odpowiedzi wyświetla pełną treść odpowiedzi z serwera backendu. Jak już wspomnieliśmy, format i treść ładunku odpowiedzi może się różnić w zależności od implementacji serwera backendu.
    • Sekcja Nagłówek odpowiedzi > Serwer może wskazywać źródło odpowiedzi.
  5. Aby wyświetlić dane Analytics i potwierdzić diagnostykę, kliknij na stronie śledzenia etap Zarejestrowane dane Analytics, jak pokazano na poniższym ilustracji:

    szczegóły analityki z śledzenia

    Sekcja Nagłówki odpowiedzi w szczegółach etapu zawiera wartości X-Apigee-fault-code i X-Apigee-fault-source, jak widać na ilustracji poniżej:

    szczegóły etapu analizy w interfejsie

    Jeśli te pola zawierają wartości podane w poniższej tabeli, 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
  6. Sprawdź łańcuch proxy. Aby sprawdzić, czy serwer backendu wywołuje w Apigee inny serwer proxy, wykonaj te czynności:
    1. Wróć do etapu Żądanie wysłane do serwera docelowego i kliknij przycisk Pokaż Curl, aby wyświetlić alias hosta serwera backendu.
    2. Jeśli alias hosta serwera backendu wskazuje na alias hosta wirtualnego, łańcuch serwerów proxy jest dostępny. Powtórz powyższe kroki dla każdego połączonego serwera proxy, aby zdiagnozować przyczynę błędu 504 dotyczącego przekroczenia limitu czasu bramy. Przekroczenia limitu czasu bramy 504 występujące na powiązanych serwerach proxy na innych etapach cyklu żądania/odpowiedzi można zdiagnozować za pomocą tego scenariusza.
    3. Jeśli alias hosta serwera backendu wskazuje serwer backendu, przejdź do rozwiązania.

Procedura 2. Bezpośrednie wywoływanie interfejsu API serwera backendu (użytkownicy chmury publicznej i prywatnej)

Wywołaj bezpośrednio serwer backendu, aby potwierdzić to samo zachowanie czasu odpowiedzi 504, które wystąpiło w przypadku przekroczenia limitu czasu 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 przesłania żądania do serwera backendu.
  2. Jeśli usługa backendu jest dostępna publicznie, możesz użyć polecenia curl, Postmana lub dowolnego innego klienta REST i bezpośrednio wywołać interfejs API serwera backendu.
  3. Jeśli serwer backendu jest dostępny tylko z poziomu procesorów do przetwarzania wiadomości, użyj polecenia curl, Postmana lub innego klienta REST, aby wywołać interfejs API serwera backendu bezpośrednio z tego procesora.
  4. Jeśli usługa backendu zwraca odpowiedź dotyczącą przekroczenia limitu czasu bramy 504, przejdź do rozwiązania.

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

Logi dostępu NGINX mogą pomóc w określeniu, 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 usłudze Trace. Aby sprawdzić logi dostępu do NGINX, wykonaj te czynności:

  1. Wyświetl logi dostępu do NGINX za pomocą tego polecenia:
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. Sprawdź odpowiedzi na błędy 504 dotyczące serwera proxy interfejsu API, którego dotyczy problem. Możesz sprawdzić konkretny przedział czasu, sprawdzić, czy problem występował w przeszłości, lub sprawdzić, czy żądania nadal kończą się niepowodzeniem i wyświetla się błąd 504.
  3. Jeśli wystąpiły jakiekolwiek odpowiedzi błędu 504, sprawdź, czy taka odpowiedź pochodzi z serwera backendu.
  4. Poniższy rysunek przedstawia przykładowy wpis w logu NGINX z informacją o błędzie 504 spowodowanym przez serwer docelowy:

    przykładowe logi nginx

    Jeśli pola X-Apigee-fault-source i X-Apigee-fault-code zawierają wartości podane 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
  5. Sprawdź serwer proxy interfejsu API, którego dotyczy problem, aby sprawdzić, czy nie występuje łańcuch proxy. Oznacza to, że serwer/punkt końcowy backendu wywołuje w Apigee inny serwer proxy. Jeśli serwer proxy interfejsu API korzysta z łańcucha serwerów proxy , powtórz powyższe kroki dla każdego połączonego serwera proxy, aby zdiagnozować przyczynę błędu 504 Przekroczenie limitu czasu bramy. Przekroczenia limitu czasu bramy 504 występujące na połączonych serwerach proxy na innych etapach można zdiagnozować za pomocą tego scenariusza.
  6. Jeśli nie ma łańcucha serwerów proxy, a odpowiedź o błędzie 504 pochodzi z serwera backendu, przejdź do rozwiązania.

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

Monitorowanie interfejsów API umożliwia szybkie wyodrębnianie problematycznych obszarów w celu diagnozowania problemów dotyczących błędów, wydajności i opóźnień oraz ich źródeł, takich jak aplikacje dla programistów, serwery proxy interfejsów API, cele backendu czy platforma API.

Przejrzyj przykładowy scenariusz pokazujący, jak rozwiązywać problemy 5xx z interfejsami API za pomocą API Monitoring. Możesz na przykład skonfigurować alert powiadamiający administratorów, gdy liczba kodów stanu 504 przekroczy określony próg.

Rozdzielczość

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

Gromadzenie informacji diagnostycznych

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

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 o błędzie 504
  • Plik śledzenia z żądaniami interfejsu API otrzymującymi odpowiedź o błędzie 504 „Limit czasu bramy”

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

  • Zaobserwowany pełny komunikat o błędzie dotyczący nieudanych żądań
  • Nazwa środowiska
  • Pakiet proxy API
  • Plik śledzenia z żądaniami interfejsu API otrzymującymi odpowiedź błędu Limit czasu bramy 504
  • 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