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:
|
| 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:
- Jeśli problem nadal występuje, włącz sesję śledzenia dla interfejsu API, którego dotyczy problem.
- Wykonaj wywołanie interfejsu API i odtwórz problem – błąd 503 Service Unavailable z kodem błędu
messaging.adaptors.http.flow.ServiceUnavailable. - Wybierz jedno z żądań, które się nie powiodły.
- 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.
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:
- Sprawdź logi dostępu NGINX: (
/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log) - 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.
- 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
Błędy połączenia spowodowane nieprawidłowym rozpoznawaniem nazw DNS
Diagnostyka
- Określ identyfikator wiadomości, której żądanie się nie powiodło.
- 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)
- 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.
- Jeśli adres IP jest nieprawidłowy, przyczyną mogą być problemy z rozpoznawaniem nazw DNS.
- 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.
- 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]
- 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.confi zostanie przeprowadzone odpowiednie rozpoznawanie nazw DNS. Jeśli na przykład/etc/resolv.confjest skonfigurowany do używania określonych serwerów nazw, będą one używane do rozpoznawania nazw DNS. - 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.- Jeśli problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w
/etc/resolv.confnadal 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. - Jeśli problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w
/etc/resolv.confwystę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.
- Jeśli problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w
- 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.
- Jeśli wystąpi problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w
/etc/resolv.conf, rozwiąż go na odpowiednim serwerze. - Jeśli wystąpi problem z konfiguracją w
/etc/resolv.confna 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
- Określ identyfikator wiadomości, której żądanie się nie powiodło.
-
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:-
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)
-
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]
-
Błąd onConnectTimeout oznacza, że procesor komunikatów nie mógł połączyć się z serwerem backendu w ustawionym czasie oczekiwania na połączenie.
- Sprawdź, czy możesz połączyć się z określonym serwerem backendu bezpośrednio z każdego procesora wiadomości za pomocą polecenia
telnet:- Jeśli serwer backendu rozpoznaje pojedynczy adres IP, użyj tego polecenia:
telnet BackendServer-IPaddress 443 - 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
- Jeśli serwer backendu rozpoznaje pojedynczy adres IP, użyj tego polecenia:
- 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:
- Jeśli problem nadal występuje, włącz sesję śledzenia dla interfejsu API, którego dotyczy problem.
- Wykonaj wywołanie interfejsu API i odtwórz problem – błąd 503 Service Unavailable z kodem błędu
messaging.adaptors.http.flow.ServiceUnavailable. - Wybierz jedno z żądań, które się nie powiodły.
- Przejdź przez różne fazy śledzenia i znajdź miejsce, w którym wystąpił błąd.
- 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

- 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.
- Nazwa hosta podana w konfiguracji serwera docelowego lub punktu końcowego jest nieprawidłowa albo zawiera niechciane spacje lub znaki specjalne.
- 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.
- 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.
- Gdy ustalisz nazwę hosta serwera docelowego, uruchom polecenie
nslookup/digna nazwie hosta, aby sprawdzić, czy można ją rozpoznać.Na przykład uruchomienie polecenia
nslookupna 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
- Jeśli polecenie systemu operacyjnego
nslookupró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:
- Określ identyfikator wiadomości żądania, które się nie powiodło.
- Wyszukaj identyfikator wiadomości w logu procesora komunikatów. (
/opt/apigee/var/log/edge-message-processor/logs/system.log) - 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
- 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
- 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>
- 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>
- Błąd
Host not reachablewystę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.
- Nazwa hosta podana w konfiguracji serwera docelowego lub punktu końcowego jest nieprawidłowa albo zawiera niechciane spacje lub znaki specjalne.
- Określ nazwę hosta serwera docelowego, z którym procesor komunikatów próbuje się komunikować, wykonując jedną z tych czynności:
- Dokładnie sprawdź komunikat o błędzie zawierający
Host not reachable. - Jeśli w komunikacie o błędzie wyświetla się nazwa hosta, skopiuj ją wraz ze spacjami i znakami specjalnymi.
- 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 {}
- Określ nazwę hosta, sprawdzając definicję serwera docelowego używaną w nieudanym proxy interfejsu API.
- Jeśli host serwera docelowego jest tworzony dynamicznie, sprawdź odpowiednią zasadę (np. zasadę AssignMessage/JavaScript) używaną do jego tworzenia.
- 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 - 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ść
- 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.
- 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.

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:
- Jeśli problem nadal występuje, włącz śledzenie interfejsu w przypadku interfejsu API, którego dotyczy problem.
- 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).
- 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:
- Sprawdź logi dostępu NGINX (
/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log). - Sprawdź, czy w przypadku konkretnego serwera proxy interfejsu API występują błędy 503.
- 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).
- Jeśli nie, problem wystąpił w połączeniu wychodzącym (między aplikacją kliencką a routerem).