503 Usługa niedostępna – serwer backendu

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

Filmy

Obejrzyj film poniżej, aby dowiedzieć się więcej o rozwiązywaniu błędów 503 dotyczących niedostępnych usług.

Wideo Opis
Błąd 503 związany z niedostępnością usługi z serwera backendu Dowiedz się więcej o:
  • Wprowadzenie do błędu 503 Service Niedostępne w Apigee Edge
  • Rozwiązywanie problemów z usługą 503 czasu rzeczywistego, która jest niedostępna z serwera backendu

Krótki opis problemu

Po wywołaniu serwera proxy interfejsu API aplikacja kliencka otrzymuje stan odpowiedzi HTTP 503 z komunikatem Usługa niedostępna.

Komunikaty o błędach

Możesz zobaczyć jeden z tych komunikatów o błędach:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

Możesz też zobaczyć komunikat o błędzie podobny do tego w odpowiedzi HTTP:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

Uwaga: powyższy kod odpowiedzi i komunikat o błędzie to tylko przykłady. W niektórych przypadkach może się pojawić tylko kod odpowiedzi błędu, bez żadnego komunikatu o błędzie. Format i zawartość kodu odpowiedzi na błąd oraz komunikat o błędzie mogą się różnić w zależności od implementacji serwera backendu.

Przyczyny

Kod stanu HTTP 503 oznacza, że serwer obecnie nie może obsłużyć żądań przychodzących. Zwykle ten błąd występuje, gdy serwer jest zbyt zajęty lub tymczasowo niedostępny z powodu konserwacji.

Możliwe przyczyny komunikatu 503 Service AVAILABLE (Usługa niedostępna) to:

Przyczyna Opis Kto może rozwiązywać problemy
Przeciążony serwer Serwer backendu jest przeciążony lub przekroczył swoje możliwości, więc nie może obsłużyć nowych przychodzących żądań klienta. Użytkownicy chmury publicznej i prywatnej usługi Edge
Serwer jest w trakcie konserwacji Na serwerze backendu mogą być tymczasowo prowadzone prace konserwacyjne. Użytkownicy chmury publicznej i prywatnej usługi Edge

Przyczyna: przeciążony serwer/serwer w trakcie konserwacji

W Apigee Edge błąd 503 Service AVAILABLE (Niedostępny) może być zwracany z serwera backendu w jednej z tych sytuacji:

  • Serwer backendu jest przeciążony/zajęty i nie może obsłużyć nowych żądań.
  • Serwer backendu jest tymczasowo niedostępny z powodu konserwacji.

Diagnostyka

Aby zdiagnozować błąd, możesz użyć jednej z tych 3 metod:

  • Narzędzie do śledzenia
  • Logi dostępu NGINX
  • Bezpośrednie połączenie z serwerem backendu

Aby poznać poszczególne metody, klikaj karty poniżej.

Narzędzie do śledzenia

  1. Włącz sesję śledzenia i wykonaj wywołanie interfejsu API, aby odtworzyć problem – „Usługa 503 jest niedostępna”.
  2. Wybierz 1 z nieudanych żądań i sprawdź log czasu.
  3. Przejdź przez różne fazy śledzenia i znajdź miejsce błędu.
  4. Jeśli w odpowiedzi z serwera docelowego zauważysz błąd 503, jego przyczyną jest serwer docelowy.

    Oto przykładowy zrzut ekranu z logiem czasu, który pokazuje odpowiedź 503 „Service Niedostępne” z serwera docelowego:

  5. Kliknij etap Odpowiedź otrzymana z serwera docelowego i przejrzyj sekcje Nagłówki odpowiedzi oraz Treść odpowiedzi, aby sprawdzić, czy zawierają one przydatne informacje:
    • Nagłówki odpowiedzi mogą zawierać nagłówek serwera, który wskazuje, skąd wysłano odpowiedź o błędzie.
    • Treść odpowiedzi może zawierać dodatkowe informacje o przyczynie wysłania kodu odpowiedzi 503 przez serwer docelowy.
  6. Sprawdź, czy błąd 503 pochodzi z serwera docelowego, sprawdzając wartości pól X-Apigee-fault-source i X-Apigee-fault-code na etapie AX (rejestrowane dane Analytics) na etapie śledzenia, wykonując te czynności:
    1. Kliknij AX (rejestrowane dane Analytics) Etap, jak pokazano na zrzucie ekranu poniżej:
    2. Przewiń w dół do sekcji Nagłówki odpowiedzi i ustal wartości X-Apigee-fault-code oraz X-Apigee-fault-source, jak pokazano poniżej:
    3. Jeśli wartości wartości X-Apigee-fault-source i X-Apigee-fault-code są zgodne z wartościami podanymi w poniższej tabeli, możesz sprawdzić, czy błąd 503 pochodzi z serwera docelowego:
      Nagłówki odpowiedzi Wartość
      X-Apigee-fault-source cel
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. Sprawdź, czy używasz łańcucha serwerów proxy, czyli czy serwer docelowy/docelowy punkt końcowy wywołuje w Apigee inny serwer proxy. Aby to sprawdzić:
    1. Wróć do etapu Żądanie wysłane do serwera docelowego i kliknij przycisk Pokaż wykres, a następnie określ alias hosta serwera docelowego.
    2. Jeśli alias hosta serwera docelowego wskazuje alias hosta wirtualnego, jest to łańcuch serwerów proxy. W takim przypadku musisz powtórzyć wszystkie powyższe kroki dla połączonego serwera proxy, aż ustalisz, co faktycznie powoduje błąd 503 Niedostępna usługa. W takich przypadkach kod 503 Service Niedostępne może wystąpić w innych powiązanych serwerach proxy na innych etapach, co można zdiagnozować za pomocą tego scenariusza.
    3. Jeśli alias hosta serwera docelowego wskazuje Twój serwer backendu, przejdź do sekcji Rozwiązanie.

Logi dostępu NGINX

Możesz też sprawdzić w logach dostępu NGINX, czy kod stanu 503 został wysłany przez serwer backendu. Jest to szczególnie przydatne, jeśli problem występował w przeszłości lub występuje sporadycznie i nie możesz przechwycić logu czasu w interfejsie. Aby określić te informacje w dziennikach dostępu NGINX, wykonaj te czynności:

  1. Sprawdź logi dostępu do NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. Wyszukaj wszystkie błędy 503 dotyczące konkretnego serwera proxy interfejsu API w określonym czasie (jeśli problem występował w przeszłości) lub wszystkie żądania, które nadal kończyły się niepowodzeniem z kodem 503.
  3. Jeśli wystąpią jakiekolwiek błędy 503, sprawdź, czy błąd pochodzi z serwera backendu. Jeśli wartości wartości X-Apigee-fault-source i X-Apigee-fault-code są zgodne z wartościami podanymi w tabeli poniżej, błąd 503 pochodzi z serwera backendu:
    Nagłówki odpowiedzi Wartość
    X-Apigee-fault-source cel
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    Oto przykładowy wpis przedstawiający błąd 503 spowodowany przez serwer docelowy:

  4. Sprawdź konkretny serwer proxy interfejsu API i upewnij się, że używasz łańcucha proxy, czyli jeśli serwer docelowy/docelowy punkt końcowy nie wywołuje innego serwera proxy w Apigee. Jeśli korzystasz z łańcucha serwerów proxy, powtórz wszystkie podane wyżej kroki dla połączonego serwera proxy, aż ustalisz, co rzeczywiście powoduje błąd 503 Service Niedostępne. W takich przypadkach kod 503 Service Niedostępne może też wystąpić w innych powiązanych serwerach proxy na innych etapach, co możesz zdiagnozować, korzystając z tego scenariusza.
  5. Jeśli potwierdzisz, że nie używasz łańcucha serwerów proxy, a błąd 503 pochodzi z serwera backendu, przejdź do rozwiązania.

Wywołanie serwera backendu

Możesz zadzwonić bezpośrednio do serwera backendu i sprawdzić, czy otrzymujesz tę samą odpowiedź 503 Service Niedostępne co podczas wysyłania żądania za pomocą Apigee Edge.

  1. Sprawdź, czy masz wszystkie wymagane nagłówki, parametry zapytania i wszystkie dane uwierzytelniające, które muszą być przekazywane do serwera backendu w ramach żądania.
  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 do serwera backendu można uzyskać dostęp tylko za pomocą procesorów wiadomości, możesz użyć polecenia curl, Postmana lub innego klienta REST i wywołać interfejs API serwera backendu bezpośrednio z tego procesora.
  4. Sprawdź, czy usługa backendu faktycznie zwraca błąd 503 Usługa niedostępna.

Rozdzielczość

Jeśli masz pewność, że błąd 503 pochodzi z serwera backendu, wykonaj te czynności, aby rozwiązać problem:

  • Jeśli problem jest spowodowany awarią serwera backendu z powodu konserwacji, możesz przełączyć serwer backendu w tryb online po zakończeniu konserwacji.
  • Jeśli problem jest spowodowany przeciążeniem serwera backendu, rozwiąż problem, o ile masz dostęp do serwera backendu. W przeciwnym razie może być konieczne rozwiązanie tego problemu z zespołem serwera backendu.

Diagnozowanie problemów za pomocą monitorowania interfejsów API

Monitorowanie interfejsów API umożliwia szybkie wyizolowanie obszarów problemó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 z interfejsami API 5xx za pomocą API Monitoring. Możesz na przykład skonfigurować alert, aby otrzymywać powiadomienia, gdy liczba błędów messages.adaptors.http.flow.ErrorResponseCode przekroczy określony próg.

Musisz zebrać informacje diagnostyczne

Jeśli problem nie ustąpi mimo wykonania powyższych instrukcji, zbierz poniższe informacje diagnostyczne i skontaktuj się z zespołem pomocy Apigee.

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

  • Nazwa organizacji
  • Nazwa środowiska
  • Nazwa serwera proxy interfejsu API
  • Wykonaj polecenie curl, aby odtworzyć błąd 503
  • Plik śledzenia zawierający żądania z błędem 503 Service Niedostępne
  • Jeśli błędy 503 nie występują obecnie, podaj informacje o strefie czasowej, w których wystąpiły błędy 503 w przeszłości.

Jeśli korzystasz z chmury prywatnej, podaj te informacje:

  • Zaobserwowany pełny komunikat o błędzie dotyczący nieudanych żądań.
  • Organizacja, nazwa środowiska i nazwa serwera proxy interfejsu API, w przypadku których występują błędy 503.
  • pakiet API.
  • Plik śledzenia zawierający żądania z błędem 503 Service Niedostępne.
  • 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
  • Okres z informacjami o strefie czasowej, w których wystąpiły błędy 503.