Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Krótki opis problemu
Wdrażanie wersji proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Management API nie udaje się z powodu błędu przekroczenia limitu czasu.
Komunikaty o błędach
Click to change deployment status. The revision is deployed and traffic can flow, but flow may be impaired. Error: Call timed out; either server is down or server is not reachable
Możliwe przyczyny
Typowe przyczyny tego problemu:
| Przyczyna | Szczegóły | Okres: |
| Problem z łącznością sieciową | Brak komunikacji między serwerem zarządzania a procesorem komunikatów z powodu problemów z łącznością sieciową lub reguł zapory. | Tylko użytkownicy chmury prywatnej |
| Duży pakiet proxy interfejsu API | Aktywacja procesora komunikatów może potrwać długo, jeśli pakiet proxy interfejsu API jest duży w rozmiarze, co może prowadzić do przekroczenia limitu czasu RPC. | Użytkownicy chmury prywatnej i publicznej |
Problem z łącznością sieciową
Uwaga: te czynności mogą wykonać tylko użytkownicy chmury prywatnej Edge. Jeśli korzystasz z chmury publicznej Edge, skontaktuj się z zespołem pomocy Apigee Edge.
Diagnostyka
- Aby uzyskać stan wdrożenia konkretnego interfejsu API, w którym występuje błąd, użyj tego
wywołania interfejsu Management API:
curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
Przykładowe dane wyjściowe z błędem:
{ "error": "Call timed out; either server is down or server is not reachable", "status": "error", "type": [ "message-processor" ], "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" }, { "status": "deployed", "type": [ "message-processor" ], "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" }, { "status": "deployed", "type": [ "router" ], "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" }, { "status": "deployed", "type": [ "router" ], "state" : "error" }
Z powyższych przykładowych danych wyjściowych wynika, że błąd wystąpił na jednym z procesorów wiadomości o identyfikatorze UUID "
ebbc1078-cbde-4a00-a7db-66a3c1b2b748". - Na podstawie danych wyjściowych stanu wdrożenia proxy interfejsu API zaloguj się na każdym z procesorów wiadomości z odpowiednim identyfikatorem UUID, w którym wystąpił błąd, i wykonaj te czynności:
- Sprawdź, czy procesor komunikatów nasłuchuje na porcie 4528:
netstat -an | grep LISTEN | grep 4528
Jeśli procesor komunikatów nie nasłuchuje na porcie 4528, uruchom go ponownie:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Ponownie sprawdź stan wdrożenia proxy interfejsu API za pomocą wywołania interfejsu API zarządzania pokazanego w kroku 1 powyżej. Jeśli nie ma błędów, oznacza to, że problem został rozwiązany.
- Sprawdź, czy procesor komunikatów nasłuchuje na porcie 4528:
- Jeśli problem nadal występuje, przetestuj połączenie z serwera zarządzania z procesorem
wiadomości na porcie 4528, wykonując te czynności:
- Jeśli telnet jest dostępny, użyj telnetu:
telnet <MessageProcessor_IP> 4528
- Jeśli telnet nie jest dostępny, użyj netcat, aby sprawdzić połączenie:
nc -vz <MessageProcessor_IP> 4528
- Jeśli otrzymasz odpowiedź „Connection Refused” (Odmowa połączenia) lub „Connection timed out” (Przekroczono limit czasu połączenia), skontaktuj się z zespołem ds. operacji sieciowych.
- Jeśli telnet jest dostępny, użyj telnetu:
- Przetestuj połączenie z procesora komunikatów z serwerem zarządzania na porcie 4526
wykonując te czynności:
- Jeśli telnet jest dostępny, użyj telnetu:
telnet <management-server-IP> 4526
- Jeśli telnet nie jest dostępny, użyj netcat, aby sprawdzić połączenie:
nc -vz <management-server-IP> 4526
- Jeśli otrzymasz odpowiedź "Connection Refused" (Odmowa połączenia) lub "Connection timed out" (Przekroczono limit czasu połączenia), skontaktuj się ze swoim zespołem ds. operacji sieciowych.
- Jeśli telnet jest dostępny, użyj telnetu:
- Skontaktuj się z zespołem ds. operacji sieciowych i wykonaj te czynności:
- Upewnij się, że protokół RPC jest dozwolony zarówno na serwerze zarządzania, jak i na procesorze wiadomości.
- Usuń wszelkie ograniczenia zapory sieciowej lub reguły bezpieczeństwa skonfigurowane między serwerami zarządzania i procesorami wiadomości, aby umożliwić połączenie z portem 4526 na serwerze zarządzania oraz połączenie z serwera zarządzania z procesorami wiadomości na porcie 4528.
- Ponownie sprawdź stan wdrożenia (patrz krok 1 powyżej). Jeśli nie widzisz żadnych błędów, oznacza to, że problem został rozwiązany.
- Jeśli problem nadal występuje, sprawdź, czy na procesorze komunikatów nie ma problemu z siecią. Jeśli występuje problem z siecią, ponowne uruchomienie konkretnego procesora komunikatów, w którym występuje błąd przekroczenia limitu czasu (zgodnie z danymi wyjściowymi stanu wdrożenia), może rozwiązać problem:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Jeśli problem nadal występuje, sprawdź dzienniki serwera zarządzania w lokalizacji:
(
/opt/apigee/var/log/edge-management-server/logs/system.log).Przykładowy błąd przekroczenia limitu czasu wywołania w dzienniku serwera zarządzania
2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true com.apigee.rpc.RPCException: Call timed out at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79]
Jeśli zauważysz podobny błąd jak w powyższym przykładzie, zwiększ limit czasu RPC na serwerze zarządzania, aby w przypadku spowolnienia sieci serwer zarządzania miał czas na połączenie się z procesorem komunikatów.
Rozdzielczość
Uwaga: te czynności mogą wykonać tylko użytkownicy chmury prywatnej Edge. Jeśli korzystasz z chmury publicznej Edge, skontaktuj się z zespołem pomocy Apigee Edge.
- Aby zwiększyć limit czasu RPC, wykonaj te czynności:
- Jeśli na maszynie serwera zarządzania nie ma jeszcze pliku
/opt/apigee/customer/application/management-server.properties, utwórz go. - Dodaj do tego pliku ten wiersz:
conf_cluster_rpc.connect.timeout=<time in seconds>
Domyślna wartość limitu czasu RPC to 10 sekund. Zalecamy zwiększenie jej do 40 sekund. Ustaw ją w ten sposób:
conf_cluster_rpc.connect.timeout=40
- Upewnij się, że właścicielem tego pliku jest apigee:
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Uruchom ponownie serwer zarządzania:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Jeśli masz więcej niż 1 serwer zarządzania, powtórz powyższe czynności na wszystkich serwerach zarządzania.
- Wdróż proxy interfejsu API w interfejsie Edge lub za pomocą wywołania interfejsu Edge Management API. Jeśli proxy interfejsu API zostanie wdrożone bez żadnych problemów, oznacza to, że problem został rozwiązany.
- Jeśli na maszynie serwera zarządzania nie ma jeszcze pliku
- Jeśli problem nadal występuje, zbierz dane z serwera zarządzania i procesora komunikatów za pomocą polecenia
tcpdump. Włącz polecenie tcpdump
na każdym z serwerów, a następnie rozpocznij wdrażanie proxy interfejsu API z interfejsu
lub za pomocą interfejsu Management API:
- Uruchom to polecenie tcpdump na serwerze zarządzania:
tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
- Uruchom to polecenie tcpdump na procesorze komunikatów:
tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
- Aby uzyskać pomoc w analizowaniu danych tcpdump i dalszym rozwiązywaniu problemu, skontaktuj się z zespołem pomocy Apigee Edge.
- Uruchom to polecenie tcpdump na serwerze zarządzania:
Duży pakiet proxy interfejsu API
Diagnostyka
- Sprawdź rozmiar pakietu proxy interfejsu API, w przypadku którego występuje błąd wdrożenia.
- Jeśli rozmiar jest dość duży (10 MB lub więcej), procesor wiadomości może potrzebować więcej czasu na aktywowanie proxy interfejsu API.
- Jeśli rozmiar pakietu proxy interfejsu API jest większy niż 15 MB, przejdź do sekcji Pakiet proxy interfejsu API większy niż 15 MB.
Rozdzielczość
Uwaga: te czynności mogą wykonać tylko użytkownicy chmury prywatnej Edge. Jeśli korzystasz z chmury publicznej Edge, skontaktuj się z zespołem pomocy Apigee Edge.
Zwiększ limit czasu RPC na serwerze zarządzania, aby procesor komunikatów miał wystarczająco dużo czasu na aktywowanie dużych pakietów proxy interfejsu API. Aby zwiększyć wartość limitu czasu RPC , wykonaj te czynności:
- Jeśli na maszynie serwera zarządzania nie ma jeszcze pliku
/opt/apigee/customer/application/management-server.properties, utwórz go. - Dodaj do tego pliku ten wiersz:
conf_cluster_rpc.connect.timeout=<time in seconds>
Domyślna wartość limitu czasu RPC to 10 sekund. Zalecamy zwiększenie jej do 40 sekund. Ustaw ją w ten sposób:
conf_cluster_rpc.connect.timeout=40
- Upewnij się, że właścicielem tego pliku jest apigee:
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Uruchom ponownie serwer zarządzania:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Jeśli masz więcej niż 1 serwer zarządzania, powtórz powyższe czynności na wszystkich serwerach zarządzania.
Jeśli problem nadal występuje, skontaktuj się z zespołem pomocy Apigee Edge w celu uzyskania dalszej pomocy.