Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Krótki opis problemu
Aplikacja kliencka otrzymuje błąd przekroczenia limitu czasu dla żądań do interfejsu API lub żądanie zostaje zakończone nagle podczas wykonywania żądania do interfejsu API w Apigee.
będziesz obserwować kod stanu 499
dla takich żądań do interfejsu API w usłudze API Monitoring.
Logi dostępu NGINX. Czasami w interfejsie API Analytics widoczne są różne kody stanu,
pokazuje kod stanu zwrócony przez procesor wiadomości.
Komunikat o błędzie
Aplikacje klienckie mogą zobaczyć błędy takie jak:
curl: (28) Operation timed out after 6001 milliseconds with 0 out of -1 bytes received
Co powoduje przekroczenie czasu oczekiwania klienta?
Typowa ścieżka żądania do interfejsu API na platformie Edge to Klient > Router > Procesor wiadomości > Serwer backendu zgodnie z tą ilustracją:
Routery i procesory wiadomości na platformie Apigee Edge są odpowiednio skonfigurowane domyślne wartości limitu czasu, by realizacja żądań do interfejsu API nie trwała zbyt długo.
Upłynął limit czasu klienta
Dla aplikacji klienckich można ustawić odpowiednią wartość limitu czasu w zależności od potrzeb.
Klienty takie jak przeglądarki czy aplikacje mobilne mają limity czasu zdefiniowane przez system operacyjny.
Upłynął limit czasu w routerze
Domyślny limit czasu skonfigurowany na routerach to 57 sekund. Jest to maksymalny czas Serwer proxy interfejsu API może być wykonywany od momentu otrzymania żądania do interfejsu API w Edge do momentu z powrotem, w tym z odpowiedzią backendu i wszystkimi wykonywanymi zasadami. Domyślny czas oczekiwania można zastąpić na routerach i hostach wirtualnych, jak wyjaśniono w artykule Konfiguruję czas oczekiwania na operacje wejścia-wyjścia w routerach.
Czas oczekiwania w procesorach wiadomości
Domyślny limit czasu skonfigurowany w systemach przetwarzania wiadomości wynosi 55 sekund. To jest maksymalna kwota ile czasu może zająć serwer backendu na przetworzenie żądania i odpowiedź na komunikat Podmiot przetwarzający. Domyślny limit czasu można zastąpić w procesorach komunikatów lub w interfejsie API Serwer proxy został opisany w artykule Konfiguruję czas oczekiwania na operacje wejścia-wyjścia w procesorach wiadomości.
Jeśli klient zamknie połączenie z routerem przed upływem czasu oczekiwania serwera proxy interfejsu API,
wyświetli błąd przekroczenia limitu czasu dla konkretnego żądania do interfejsu API. W przypadku takich żądań w routerze logowany jest kod stanu 499 Client
Closed Connection
, który można zaobserwować w interfejsie API
Logi monitorowania i dostępu NGINX.
Możliwe przyczyny
Oto typowe przyczyny błędu 499 Client Closed Connection
w Edge:
Przyczyna | Opis | Instrukcje rozwiązywania problemów dotyczące |
---|---|---|
Klient nagle zamknął połączenie | Dzieje się tak, gdy klient zamyka połączenie, ponieważ użytkownik anuluje przed zakończeniem. | Użytkownicy chmury publicznej i prywatnej |
Czas oczekiwania aplikacji klienckiej | Dzieje się tak, gdy upływa limit czasu działania aplikacji klienckiej, zanim serwer proxy interfejsu API zdąży i wysyłanie odpowiedzi. Zwykle dzieje się tak, gdy limit czasu klienta jest krótszy ponad limit czasu routera. | Użytkownicy chmury publicznej i prywatnej |
Typowe kroki diagnostyki
Użyj jednego z tych narzędzi lub metod, aby zdiagnozować ten błąd:
- Monitorowanie interfejsów API
- Logi dostępu NGINX
Monitorowanie interfejsów API
Aby zdiagnozować błąd za pomocą monitorowania interfejsów API:
- Przejdź do przycisku Analiza > Monitorowanie interfejsów API > Zbadaj stronę.
- Odfiltruj błędy (
4xx
) i wybierz przedział czasu. - Porównaj Kod stanu z czasem.
- Wybierz komórkę, która zawiera
499
błędów, jak pokazano poniżej: - W panelu po prawej stronie zobaczysz informacje o błędzie
499
. poniżej: - W panelu po prawej stronie kliknij Wyświetl logi.
W oknie Logi ruchu zapoznaj się z poniższymi informacjami na temat niektórych zdarzeń typu
499
błędy:- Request (Żądanie): określa metodę żądania i identyfikator URI używane do wykonywania wywołań.
- Czas odpowiedzi:podaje łączny czas realizacji żądania.
Wszystkie logi można też pobrać za pomocą interfejsu API Monitoring interfejsu API pobierania logów. Dla: na przykład wysyłając zapytania dotyczące logów
org
,env
timeRange
istatus
, możesz pobrać wszystkie Dzienniki transakcji, w przypadku których przekroczono limit czasu klienta.Monitorowanie interfejsów API ustawia serwer proxy na
-
dla HTTP499
. możesz użyć interfejsu API (Logs API), aby pobrać powiązany serwer proxy dla wirtualnego hosta i ścieżki.Na przykład:
curl "https://apimonitoring.enterprise.apigee.com/logs/apiproxies?org=ORG&env=ENV&select=https://VIRTUAL_HOST/BASEBATH" -H "Authorization: Bearer $TOKEN"
- Sprawdź Czas odpowiedzi pod kątem dodatkowych błędów (
499
) i sprawdź, czy Czas odpowiedzi jest spójny (powiedzmy 30 sekund)499
błędów.
Logi 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 błędach HTTP
499
. - Sprawdź logi dostępu NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Wyszukaj błędy (
499
) w tym okresie (jeśli problem wystąpił w przeszłości) lub jeśli masz jakieś żądania, które nadal kończą się niepowodzeniem499
- Zwróć uwagę na te informacje dotyczące niektórych błędów typu
499
:- Całkowity czas odpowiedzi
- Identyfikator URI żądania
- Klient użytkownika
Przykładowy błąd 499 z dziennika dostępu NGINX:
2019-08-23T06:50:07+00:00 rrt-03f69eb1091c4a886-c-sy 50.112.119.65:47756 10.10.53.154:8443 10.001 - - 499 - 422 0 GET /v1/products HTTP/1.1 - okhttp/3.9.1 api.acme.org rrt-03f69eb1091c4a886-c-sy-13001-6496714-1 50.112.119.65 - - - - - - - -1 - - dc-1 router-pod-1 rt-214-190301-0020137-latest-7d 36 TLSv1.2 gateway-1 dc-1 acme prod https -
W tym przykładzie widoczne są te informacje:
- Całkowity czas odpowiedzi:
10.001
s. Oznacza to, że przekroczono limit czasu klienta po 10,001 sekundy - Prośba:
GET /v1/products
- Gospodarz:
api.acme.org
- Klient użytkownika:
okhttp/3.9.1
- Sprawdź, czy wartości Total Response Time (Całkowity czas odpowiedzi) i User Agent (Klient użytkownika) są stałe.
we wszystkich
499
błędach.
Przyczyna: klient nagle zamknął połączenie
Diagnostyka
- Gdy interfejs API jest wywoływany z aplikacji na jednej stronie uruchomionej w przeglądarce lub aplikacji mobilnej, przeglądarka przerwie żądanie, jeśli użytkownik nagle zamknie przeglądarkę, przejdzie na inną stronę na tej samej karcie lub zatrzymać wczytywanie, klikając przestaje się ładować.
- W takim przypadku transakcje ze stanem HTTP
499
zazwyczaj się różnią w czasie przetwarzania żądań (Response Time) dla każdego z nich. -
Aby ustalić, czy jest to przyczyna, porównaj Czas odpowiedzi i sprawdź, czy
jest inny dla każdego z błędów
499
korzystających z monitorowania interfejsu API lub dostępu do NGINX dzienniki zgodnie z opisem w sekcji Typowe kroki diagnostyki.
Rozdzielczość
- To normalne i zwykle nie jest powodem do niepokoju, jeśli błędy HTTP
499
w małych ilościach. -
Jeśli często zdarza się to dla tej samej ścieżki adresu URL, być może dany serwer proxy jest powiązane z tą ścieżką bardzo wolno, a użytkownicy nie chcą czekać.
Gdy już dowiesz się, których serwera proxy może dotyczyć problem, użyj Czas oczekiwania panelu analizy, aby dokładniej zbadać, co powoduje opóźnienie serwera proxy.
- W takim przypadku określ serwer proxy, którego dotyczy problem, wykonując czynności opisane w Najczęstsze czynności diagnostyczne.
- Użyj instrukcji panel analizy czasu oczekiwania, aby dokładniej zbadać, co powoduje opóźnienie serwera proxy. aby rozwiązać problem.
- Jeśli stwierdzisz, że dla konkretnego serwera proxy opóźnienie jest spodziewane, być może , aby poinformować użytkowników, że oczekiwanie na odpowiedź serwera proxy może trochę potrwać.
Przyczyna: limit czasu oczekiwania aplikacji klienckiej
Może się tak zdarzyć w zależności od różnych scenariuszy.
-
Przetworzenie żądania powinno zająć pewien czas (powiedzmy 10 sekund).
w normalnych warunkach. Aplikacja kliencka jest jednak ustawiona na nieprawidłową wartość
limit czasu (powiedzmy 5 sekund), który powoduje przekroczenie limitu czasu aplikacji klienckiej przed
żądanie do interfejsu API zostało zakończone, co prowadzi do wystąpienia
499
. W tym przypadku trzeba ustawić parametr czas oczekiwania klienta do odpowiedniej wartości. - Serwer docelowy lub objaśnienie trwa dłużej niż oczekiwano. W takim przypadku musisz poprawić błąd i odpowiednio dostosować wartości limitu czasu.
- Klient nie potrzebuje już odpowiedzi i przerwał. Może się tak zdarzyć w przypadku wysokiej jakości, interfejsów API częstotliwości, takich jak automatyczne uzupełnianie lub krótkie odpytania.
Diagnostyka
Logi dostępu do API Monitoring lub NGINX
Zdiagnozuj błąd za pomocą logów dostępu NGINX lub monitorowania interfejsów API:
- Sprawdź logi monitorowania API lub logi dostępu NGINX dotyczące transakcji HTTP
499
, jak opisano w Najczęstsze czynności diagnostyczne. - Sprawdź, czy czas odpowiedzi jest spójny dla wszystkich błędów typu
499
. - Jeśli tak, to może to oznaczać, że konkretna aplikacja kliencka skonfigurowała stały czas oczekiwania
po ich stronie. Jeśli serwer proxy lub serwer docelowy interfejsu API odpowiada powoli, klient przekroczy limit czasu
przed upływem limitu czasu serwera proxy, co spowoduje duże ilości ruchu HTTP
499s
dla tę samą ścieżkę identyfikatora URI. W tym przypadku określ klienta użytkownika z dzienników dostępu NGINX, które może pomóc w określeniu konkretnej aplikacji klienckiej. - Możliwe też, że przed Apigee znajduje się system równoważenia obciążenia, taki jak Akamai, F5, AWS ELB itd. Jeśli Apigee działa za niestandardowym systemem równoważenia obciążenia, żądanie czas oczekiwania systemu równoważenia obciążenia musi być skonfigurowany tak, aby był większy niż limit czasu Apigee API. Według domyślnie, router Apigee przekracza limit czasu po 57 sekundach, więc można skonfigurować żądanie 60 sekund w systemie równoważenia obciążenia.
Śledzenie
Zdiagnozuj błąd za pomocą śledzenia
Jeśli problem jest nadal aktywny (postępują 499
błędy), wykonaj
następujące kroki:
- Włącz sesja śledzenia danego interfejsu API w interfejsie Edge.
- Zaczekaj na wystąpienie błędu lub, jeśli masz wywołanie interfejsu API, wykonaj kilka wywołań interfejsu API. i powtórzyć błąd.
- Sprawdzaj czas, który upłynął w każdej fazie i zanotuj, który etap na reklamę.
- Jeśli błąd jest najdłuższy, tuż po jednej z
kolejnych fazach, oznacza to, że serwer backendu działa wolno lub zajmuje dużo czasu
w celu przetworzenia żądania:
- Żądanie wysłane do serwera docelowego
- Zasady dotyczące wywołań usługi
Oto przykładowy log czasu interfejsu pokazujący Limit czasu bramy po wysłaniu żądania Request wysłane do serwera docelowego:
Rozdzielczość
- Patrz: Sprawdzone metody konfigurowania limitu czasu wejścia-wyjścia, które pozwalają określić wartości limitu czasu na różnych komponentach zaangażowanych w przepływ żądania do interfejsu API przez Apigee Edge.
- Ustaw odpowiednią wartość limitu czasu dla aplikacji klienckiej zgodnie z za sprawdzone metody.
Jeśli problem nadal występuje, przeczytaj artykuł Wymagane są informacje diagnostyczne .
Musi zbierać informacje diagnostyczne
Jeśli problem nie ustąpi, zbierz poniższe informacje diagnostyczne, a następnie 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
używane do odtworzenia błędu przekroczenia limitu czasu - Plik śledzenia żądań do interfejsu API, w przypadku których występują błędy limitu czasu klienta
Jeśli jesteś użytkownikiem Private Cloud, podaj te informacje:
- Pełny komunikat o błędzie zaobserwowany dla nieudanych żądań
- Nazwa środowiska
- Pakiet serwera proxy interfejsu API
- Plik śledzenia żądań do interfejsu API, w przypadku których występują błędy limitu czasu klienta
- Logi dostępu NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
) - Dzienniki systemowe procesora wiadomości (
/opt/apigee/var/log/edge-message-processor/logs/system.log
)