503 Usługa niedostępna

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Filmy

Więcej informacji o błędach 503 znajdziesz w tych filmach:

Wideo Opis
Rozwiązywanie problemu z błędem 503 Service Unavailable spowodowanym przez problem z DNS Dowiedz się więcej o:
  • Błąd 503 „Usługa niedostępna” spowodowany problemami z rozpoznawaniem nazw DNS i siecią w Apigee Edge
  • Rozwiązywanie problemów z błędem 503 „Usługa niedostępna” w czasie rzeczywistym spowodowanym problemem z rozpoznawaniem nazw DNS
Rozwiązywanie problemu z błędem 503 Usługa niedostępna spowodowanym problemem z siecią Rozwiązywanie problemów z błędem 503 „Usługa niedostępna” w czasie rzeczywistym spowodowanym problemem z siecią w Apigee Edge

Krótki opis problemu

Aplikacja kliencka otrzymuje kod stanu odpowiedzi HTTP 503 z komunikatem Service Unavailable (Usługa niedostępna) po wywołaniu serwera proxy interfejsu API.

Komunikaty o błędach

Może wyświetlić się ten komunikat o błędzie:

HTTP/1.1 503 Service Unavailable
      

W odpowiedzi HTTP możesz też zobaczyć ten komunikat o błędzie:

Usługa niedostępna

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
       }
    }
}
      

Możliwe przyczyny

Odpowiedź HTTP 503 Service Unavailable z kodem błędu messaging.adaptors.http.flow.ServiceUnavailable występuje, gdy procesor komunikatów Apigee Edge napotyka błędy z powodu przekroczenia limitu czasu połączenia, nieprawidłowej nazwy hosta lub nieudanych uzgodnień protokołu SSL podczas komunikacji z serwerem backendu.

Możliwe przyczyny odpowiedzi 503 Usługa niedostępna:

Przyczyna Opis Kto może wykonać czynności wymagane do rozwiązania problemu
Błędy połączenia spowodowane nieprawidłowym rozpoznawaniem nazw DNS Rozpoznawanie nazw DNS serwera docelowego spowodowało uzyskanie nieprawidłowych adresów IP, które prowadzą do błędów połączenia. Użytkownicy Edge Private Cloud
Błędy połączenia Problemy z siecią lub łącznością uniemożliwiają klientowi połączenie się z serwerem. Użytkownicy Edge Private Cloud
Nieprawidłowa nazwa hosta serwera docelowego Określony host serwera docelowego jest nieprawidłowy lub zawiera niepożądane znaki (np. spację). Użytkownicy publicznej i prywatnej chmury Edge
Nieudane uzgodnienia połączenia za pomocą protokołu SSL Nie udało się uzgodnić połączenia TLS/SSL między klientem a serwerem. (Rozwiązywanie problemów z tą kategorią jest opisane w osobnym artykule). Użytkownicy publicznej i prywatnej chmury Edge

Typowe etapy diagnostyki

Określ identyfikator wiadomości, której żądanie się nie powiodło.

Narzędzie śledzenia

Aby określić identyfikator wiadomości, której żądanie zakończyło się niepowodzeniem, za pomocą narzędzia Trace Tool:

  1. Jeśli problem nadal występuje, włącz sesję śledzenia dla interfejsu API, którego dotyczy problem.
  2. Wykonaj wywołanie interfejsu API i odtwórz problem – błąd 503 Service Unavailable z kodem błędu messaging.adaptors.http.flow.ServiceUnavailable.
  3. Wybierz jedno z żądań, które się nie powiodły.
  4. Przejdź do fazy AX i określ identyfikator wiadomości (X-Apigee.Message-ID) żądania, przewijając w dół sekcję Szczegóły fazy, jak pokazano na ilustracji poniżej.

    Identyfikator wiadomości w sekcji Szczegóły fazy

Logi dostępu NGINX

Aby określić identyfikator wiadomości, która spowodowała błąd, używając logów dostępu NGINX:

Aby określić identyfikator wiadomości w przypadku błędów 503, możesz też sprawdzić dzienniki dostępu NGINX. Jest to szczególnie przydatne, jeśli problem wystąpił w przeszłości lub występuje sporadycznie i nie możesz zarejestrować śladu w interfejsie. Aby uzyskać te informacje z dzienników dostępu NGINX, wykonaj te czynności:

  1. Sprawdź logi dostępu NGINX: (/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log)
  2. Sprawdź, czy w określonym czasie występują błędy 503 w przypadku konkretnego serwera proxy interfejsu API (jeśli problem wystąpił w przeszłości) lub czy nadal występują żądania kończące się niepowodzeniem z kodem 503.
  3. Jeśli wystąpią błędy 503 z komunikatem X-Apigee-fault-code messaging.adaptors.http.flow.ServiceUnavailable, zanotuj identyfikator wiadomości dla co najmniej jednego takiego żądania, jak pokazano w tym przykładzie:

    Przykładowy wpis z błędem 503

    Przykładowy wpis z kodem stanu, identyfikatorem wiadomości, źródłem błędu i kodem błędu

Błędy połączenia spowodowane nieprawidłowym rozpoznawaniem nazw DNS

Diagnostyka

  1. Określ identyfikator wiadomości, której żądanie się nie powiodło.
  2. Wyszukaj w dzienniku procesora komunikatów (/opt/apigee/var/log/edge-message-processor/logs/system.log) identyfikator konkretnego komunikatu żądania. Możesz zobaczyć te błędy:

    Błąd onConnectTimeout oznacza, że procesor komunikatów nie mógł połączyć się z serwerem backendu w ustawionym czasie oczekiwania na połączenie (domyślnie: 3 sekundy).
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11  resolvedAddress=www.abc.com/22.22.22.22
    
    2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
          
  3. Zanotuj rozpoznany adres IP w błędzie onConnectTimeout i sprawdź, czy jest on prawidłowy dla serwera backendu. Jeśli adres IP jest prawidłowy, przejdź do sekcji Błędy połączenia.
  4. Jeśli adres IP jest nieprawidłowy, przyczyną mogą być problemy z rozpoznawaniem nazw DNS.
  5. Powtórz kroki 3 i 4 w przypadku kilku innych nieudanych żądań interfejsu API i sprawdź, czy widzisz te same czy inne nieprawidłowe adresy IP.
  6. Przeszukaj dziennik procesora komunikatów (/opt/apigee/var/log/edge-message-processor/logs/system.log) pod kątem wiadomości ze słowem kluczowym DNS Refresh. Sprawdź, czy do pamięci podręcznej DNS na procesorze komunikatów są od czasu do czasu dodawane nieprawidłowe adresy IP.
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
          
  7. Ten problem może wystąpić, jeśli pojawią się problemy z autorytatywnymi serwerami DNS lub serwerami nazw skonfigurowanymi w /etc/resolv.conf.

    Zazwyczaj do przeprowadzania rozpoznawania nazw DNS można skonfigurować co najmniej 1 autorytatywny serwer DNS. Jeśli nie ma autorytatywnych serwerów DNS, nastąpi powrót do konfiguracji w /etc/resolv.conf i zostanie przeprowadzone odpowiednie rozpoznawanie nazw DNS. Jeśli na przykład /etc/resolv.conf jest skonfigurowany do używania określonych serwerów nazw, będą one używane do rozpoznawania nazw DNS.
  8. Jeśli wystąpią problemy z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w /etc/resolv.conf, nazwy hostów serwerów backendu zostaną rozpoznane jako nieprawidłowe adresy IP. Nieprawidłowe adresy IP będą następnie przechowywane w pamięci podręcznej DNS procesora komunikatów.
    1. Jeśli problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w /etc/resolv.conf nadal występuje, nieprawidłowe adresy IP pozostaną w pamięci podręcznej DNS procesora komunikatów. Dopóki nieprawidłowe adresy IP są przechowywane w pamięci podręcznej DNS procesora komunikatów, żądania do wszystkich interfejsów API korzystających z określonego serwera backendu będą kończyć się niepowodzeniem i wyświetlać błąd 503.
    2. Jeśli problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w /etc/resolv.conf występuje sporadycznie, w pamięci podręcznej DNS będą okresowo przechowywane prawidłowe i nieprawidłowe adresy IP. W takim przypadku w przypadku wszystkich interfejsów API korzystających z określonego serwera backendu będą się pojawiać błędy 503.
  9. Jeśli problem z serwerami DNS będzie się powtarzać, ciągle będą występować błędy. Jeśli problem z serwerami DNS występuje sporadycznie, będziesz widzieć sporadyczne błędy. Oznacza to, że gdy nazwa hosta serwera backendu zostanie rozpoznana jako nieprawidłowy adres IP, pojawią się błędy 503. Gdy nazwy hostów serwera backendu zostaną rozpoznane jako prawidłowe adresy IP, zobaczysz odpowiedzi w sytuacjach powodzenia.

Rozdzielczość

Skontaktuj się z administratorem systemu operacyjnego i rozwiąż problemy z serwerami DNS.

  1. Jeśli wystąpi problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w /etc/resolv.conf, rozwiąż go na odpowiednim serwerze.
  2. Jeśli wystąpi problem z konfiguracją w /etc/resolv.conf na systemach z procesorami wiadomości, rozwiąż go.

Błędy połączeń

Błąd połączenia występuje, gdy procesor komunikatów Apigee Edge próbuje połączyć się z serwerem backendu i wystąpi jeden z tych problemów:

  • Procesor komunikatów nie może nawiązać połączenia w ustawionym okresie limitu czasu połączenia. (Domyślnie: 3 sekundy)
  • Serwer backendu odrzuca połączenie.

Diagnostyka

  1. Określ identyfikator wiadomości, której żądanie się nie powiodło.
  2. Wyszukaj w dzienniku procesora komunikatów (/opt/apigee/var/log/edge-message-processor/logs/system.log) identyfikator konkretnej wiadomości z żądaniem. Możesz zobaczyć te błędy:
    1. Błąd onConnectTimeout oznacza, że procesor komunikatów nie mógł połączyć się z serwerem backendu w ustawionym czasie oczekiwania na połączenie.
      2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11
      2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
    2. Błąd java.net.ConnectException: Connection refused oznacza, że serwer backendu odrzucił połączenie.
      14:40:16.531 +0530
      2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {}
      java.net.ConnectException: Connection refused
      at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75]
      at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75]
      at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na]
      at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
  3. Sprawdź, czy możesz połączyć się z określonym serwerem backendu bezpośrednio z każdego procesora wiadomości za pomocą polecenia telnet:
    1. Jeśli serwer backendu rozpoznaje pojedynczy adres IP, użyj tego polecenia:
      telnet BackendServer-IPaddress 443
                
    2. Jeśli serwer backendu odnosi się do kilku adresów IP, użyj nazwy hosta serwera backendu w poleceniu telnet, jak pokazano poniżej:
      telnet BackendServer-HostName 443
                
  4. Jeśli uda Ci się połączyć z serwerem backendu, może pojawić się komunikat podobny do tego: Connected to backend-server. Jeśli nie możesz połączyć się z serwerem backendu, może to być spowodowane tym, że adresy IP procesorów wiadomości nie znajdują się na liście dozwolonych na tym serwerze.

Rozdzielczość

Udziel dostępu do adresów IP procesora wiadomości na konkretnym serwerze backendu, aby umożliwić ruch z procesorów wiadomości Edge do serwera backendu. Na przykład w systemie Linux możesz użyć polecenia iptables, aby zezwolić na ruch z adresów IP procesora wiadomości na serwerze backendu.

Jeśli problem nadal występuje, skontaktuj się z administratorem sieci, aby go zdiagnozować i rozwiązać. Jeśli potrzebujesz dalszej pomocy ze strony Apigee, skontaktuj się z zespołem pomocy Apigee.

Nieprawidłowa nazwa hosta serwera docelowego

Diagnostyka

Jeśli nazwa hosta podana na serwerze docelowym jest nieprawidłowa, możesz otrzymać odpowiedź 503 Usługa niedostępna z kodem błędu messaging.adaptors.http.flow.ServiceUnavailable.

Narzędzie śledzenia

Aby przeprowadzić diagnostykę za pomocą narzędzia Śledzenie:

  1. Jeśli problem nadal występuje, włącz sesję śledzenia dla interfejsu API, którego dotyczy problem.
  2. Wykonaj wywołanie interfejsu API i odtwórz problem – błąd 503 Service Unavailable z kodem błędu messaging.adaptors.http.flow.ServiceUnavailable.
  3. Wybierz jedno z żądań, które się nie powiodły.
  4. Przejdź przez różne fazy śledzenia i znajdź miejsce, w którym wystąpił błąd.
  5. Wybierz element FlowInfo, w którym występuje błąd. Więcej informacji znajdziesz w polu error.cause, które może wskazywać przyczynę błędu, jak pokazano w tym przykładzie:

    Przykładowe żądanie z informacją o błędzie w śladzie

    Przykładowe żądanie z informacją o błędzie w śladzie
  6. Jeśli zauważysz, że w przypadku parametru error.cause wyświetla się wartość Host not reachable, prawdopodobną przyczyną błędu jest jedna z tych sytuacji:
    • Nazwa hosta podana w konfiguracji serwera docelowego lub punktu końcowego jest nieprawidłowa albo zawiera niechciane spacje lub znaki specjalne.

      Na przykład w nazwie hosta znajduje się niechciana spacja, jak pokazano poniżej:
      "demo-target.apigee.net "
                        
    • Nazwa hosta zastąpiona przez zmienną target.url w proxy API za pomocą zasady AssignMessage lub JavaScript jest nieprawidłowa lub zawiera spację albo inne niepożądane znaki specjalne.
  7. Sprawdź konfigurację docelowego punktu końcowego lub definicję serwera docelowego, aby sprawdzić, czy nazwa hosta serwera docelowego jest nieprawidłowa lub zawiera niechciane spacje lub znaki specjalne.
  8. Jeśli host serwera docelowego jest tworzony dynamicznie, sprawdź odpowiednią zasadę (np. zasadę AssignMessage/JavaScript) używaną do jego tworzenia. Sprawdź, czy nazwa hosta serwera docelowego jest prawidłowa i czy nie zawiera niepotrzebnych spacji ani znaków specjalnych.
  9. Gdy ustalisz nazwę hosta serwera docelowego, uruchom polecenie nslookup/dig na nazwie hosta, aby sprawdzić, czy można ją rozpoznać.

    Na przykład uruchomienie polecenia nslookup na nazwie hosta z niechcianą spacją zwraca te dane wyjściowe:

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
  10. Jeśli polecenie systemu operacyjnego nslookup również nie może rozpoznać nazwy hosta, przyczyną problemu jest nieprawidłowa nazwa hosta używana w przypadku serwera docelowego.

    Otwórz Rozdzielczość.

Logi procesora komunikatów

Aby przeprowadzić diagnostykę za pomocą logów procesora wiadomości:

  1. Określ identyfikator wiadomości żądania, które się nie powiodło.
  2. Wyszukaj identyfikator wiadomości w logu procesora komunikatów. (/opt/apigee/var/log/edge-message-processor/logs/system.log)
  3. Jeśli zobaczysz poniższe ostrzeżenia lub komunikaty o błędach, oznacza to, że procesor wiadomości nie mógł rozpoznać nazwy hosta. Wiadomość zostanie odłożona, więc możesz nie widzieć tego ostrzeżenia w przypadku wszystkich identyfikatorów wiadomości lub żądań.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
        
  4. Następnie pojawi się komunikat ostrzegawczy, w którym procesor wiadomości usunie adres z pamięci podręcznej DNS, ponieważ nie można było nawiązać połączenia z hostem serwera docelowego.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN  c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
        
  5. Może się wtedy pojawić komunikat o błędzie, w którym procesor komunikatów zgłasza wyjątek „Host not reachable” (Host niedostępny). Czasami w komunikacie o błędzie wyświetlana jest nazwa hosta:
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	<snipped>
        
  6. Czasami może być wyświetlana wartość null, ponieważ nazwy hosta nie można rozpoznać lub nie jest on osiągalny, jak pokazano poniżej:
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	<snipped>
        
  7. Błąd Host not reachable występuje zwykle w jednym z tych przypadków:
    • Nazwa hosta podana w konfiguracji serwera docelowego lub punktu końcowego jest nieprawidłowa albo zawiera niechciane spacje lub znaki specjalne.

      Na przykład w nazwie hosta „demo-target.apigee.net ” w tym komunikacie o błędzie występuje niechciana spacja:
      NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception
              
    • Nazwa hosta zastąpiona przez zmienną target.url w proxy API za pomocą zasad AssignMessage lub JavaScript jest nieprawidłowa lub zawiera spację albo inne niepożądane znaki specjalne.
  8. Określ nazwę hosta serwera docelowego, z którym procesor komunikatów próbuje się komunikować, wykonując jedną z tych czynności:
    1. Dokładnie sprawdź komunikat o błędzie zawierający Host not reachable .
    2. Jeśli w komunikacie o błędzie wyświetla się nazwa hosta, skopiuj ją wraz ze spacjami i znakami specjalnymi.
    3. Jeśli w komunikacie o błędzie w miejscu nazwy hosta widnieje wartość null, jak w tym przykładzie:
      org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
              
      1. Określ nazwę hosta, sprawdzając definicję serwera docelowego używaną w nieudanym proxy interfejsu API.
      2. Jeśli host serwera docelowego jest tworzony dynamicznie, sprawdź odpowiednią zasadę (np. zasadę AssignMessage/JavaScript) używaną do jego tworzenia.
  9. Gdy ustalisz nazwę hosta serwera docelowego, uruchom polecenie nslookup/dig i sprawdź, czy można ją rozpoznać.

    Na przykład uruchom polecenie nslookup na nazwie hosta, która zawiera spację.

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
          
  10. Jeśli polecenie systemu operacyjnego nslookup również nie może rozpoznać nazwy hosta, przyczyną problemu jest nieprawidłowa nazwa hosta użyta w przypadku serwera docelowego.

Rozdzielczość

  1. Sprawdź, czy nazwa hosta serwera docelowego określona w konfiguracji punktu końcowego docelowego lub w definicji serwera docelowego jest prawidłowa i nie zawiera niepotrzebnych spacji ani znaków specjalnych.
  2. Jeśli do dynamicznego generowania nazwy hosta serwera docelowego używasz zasad AssignMessage lub JavaScript, sprawdź definicję zasad i kod oraz upewnij się, że nazwa hosta serwera docelowego jest generowana prawidłowo.

Nieudane uzgodnienia połączenia za pomocą protokołu SSL

Cały przewodnik rozwiązywania problemów jest poświęcony błędom uzgadniania połączenia TLS/SSL. Zobacz Błędy uzgadniania połączenia SSL.

Określanie źródła problemu

Niektóre typy błędów mogą wystąpić na połączeniu przychodzącym (północnym) lub wychodzącym (południowym). Występuje błąd przychodzący (w kierunku północnym) między aplikacją kliencką a Edge. Występuje błąd wychodzący (południowy) między Edge a docelowym serwerem backendu. Aby zdiagnozować tego rodzaju problemy, najpierw musisz ustalić, czy błąd występuje w połączeniu wychodzącym czy przychodzącym.

Omówienie połączeń wychodzących i przychodzących

W Edge może wystąpić błąd 503 „Usługa niedostępna” w przypadku połączenia przychodzącego lub wychodzącego:

  • Połączenie przychodzące (lub północne) – połączenie między aplikacją kliencką a routerem brzegowym. Router to komponent Apigee Edge, który obsługuje przychodzące żądania kierowane do systemu.
  • Połączenie wychodzące (lub południowe) – połączenie między procesorem komunikatów Edge a serwerem backendu. Procesor komunikatów to komponent Apigee Edge, który przekazuje żądania interfejsu API do serwerów docelowych backendu.

Jeśli korzystasz z Edge Public Cloud, prawdopodobnie nie znasz wewnętrznych komponentów, takich jak router czy procesor komunikatów. Te wewnętrzne komponenty nie są widoczne ani dostępne dla użytkowników chmury publicznej. W miarę możliwości udostępniamy alternatywne sposoby zbadania problemu, które nie wymagają bezpośredniego dostępu do tych komponentów.

Na poniższym rysunku przedstawiono połączenia przychodzące i wychodzące w Apigee Edge.

Przepływ aplikacji klienckiej (połączenie wychodzące) przez Edge do serwera backendu (połączenie przychodzące)

Określanie, gdzie wystąpił błąd „503: Usługa niedostępna”

Aby sprawdzić, czy błąd 503 Service Unavailable wystąpił w połączeniu wychodzącym czy przychodzącym, wykonaj jedną z tych procedur.

Ślad interfejsu

Aby określić, gdzie wystąpił błąd, użyj śledzenia interfejsu:

  1. Jeśli problem nadal występuje, włącz śledzenie interfejsu w przypadku interfejsu API, którego dotyczy problem.
  2. Jeśli ślad interfejsu w przypadku nieudanego żądania do interfejsu API wskazuje, że błąd 503 Service Unavailable występuje podczas przepływu żądania docelowego lub jest wysyłany przez serwer backendu, problem dotyczy połączenia wychodzącego (czyli między procesorem komunikatów a serwerem backendu).
  3. Jeśli nie otrzymasz śladu dla konkretnego wywołania interfejsu API, problem występuje w kierunku północnym, czyli między aplikacją kliencką a routerem.

Monitorowanie interfejsów API

Monitorowanie interfejsu API umożliwia szybkie odizolowanie obszarów, w których występują problemy, aby zdiagnozować błędy, problemy z wydajnością i czasem oczekiwania oraz ich źródło, takie jak aplikacje deweloperów, serwery proxy interfejsów API, docelowe systemy backendu lub platforma interfejsu API.

Przejdź przez przykładowy scenariusz, który pokazuje, jak rozwiązywać problemy z kodami błędów 5xx w interfejsach API za pomocą usługi API Monitoring. Możesz na przykład skonfigurować alert, aby otrzymywać powiadomienia, gdy liczba messaging.adaptors.http.flow.ServiceUnavailable usterek przekroczy określony próg.

Logi dostępu NGINX

Aby określić, gdzie wystąpił błąd, użyj śledzenia interfejsu:

Jeśli problem wystąpił w przeszłości lub występuje sporadycznie i nie możesz zarejestrować śladu, wykonaj te czynności:

  1. Sprawdź logi dostępu NGINX (/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log).
  2. Sprawdź, czy w przypadku konkretnego serwera proxy interfejsu API występują błędy 503.
  3. Jeśli w przypadku konkretnego interfejsu API w określonym czasie wystąpiły błędy 503, problem pojawił się w połączeniu wychodzącym (między procesorem komunikatów a serwerem backendu).
  4. Jeśli nie, problem wystąpił w połączeniu wychodzącym (między aplikacją kliencką a routerem).