Błąd upływu limitu czasu

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

  1. 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".

  2. 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:
    1. 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
    2. 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.
  3. 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:
    1. Jeśli telnet jest dostępny, użyj telnetu:
      telnet <MessageProcessor_IP> 4528
    2. Jeśli telnet nie jest dostępny, użyj netcat, aby sprawdzić połączenie:
      nc -vz <MessageProcessor_IP> 4528
    3. 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.
  4. Przetestuj połączenie z procesora komunikatów z serwerem zarządzania na porcie 4526 wykonując te czynności:
    1. Jeśli telnet jest dostępny, użyj telnetu:
      telnet <management-server-IP> 4526
    2. Jeśli telnet nie jest dostępny, użyj netcat, aby sprawdzić połączenie:
      nc -vz <management-server-IP> 4526 
    3. 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.
  5. Skontaktuj się z zespołem ds. operacji sieciowych i wykonaj te czynności:
    1. Upewnij się, że protokół RPC jest dozwolony zarówno na serwerze zarządzania, jak i na procesorze wiadomości.
    2. 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.
  6. 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.
  7. 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
  8. 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.

  1. Aby zwiększyć limit czasu RPC, wykonaj te czynności:
    1. Jeśli na maszynie serwera zarządzania nie ma jeszcze pliku /opt/apigee/customer/application/management-server.properties, utwórz go.
    2. 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
    3. Upewnij się, że właścicielem tego pliku jest apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. Uruchom ponownie serwer zarządzania:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. Jeśli masz więcej niż 1 serwer zarządzania, powtórz powyższe czynności na wszystkich serwerach zarządzania.
    6. 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.
  2. 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:
    1. Uruchom to polecenie tcpdump na serwerze zarządzania:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
    2. Uruchom to polecenie tcpdump na procesorze komunikatów:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
    3. Aby uzyskać pomoc w analizowaniu danych tcpdump i dalszym rozwiązywaniu problemu, skontaktuj się z zespołem pomocy Apigee Edge.

Duży pakiet proxy interfejsu API

Diagnostyka

  1. Sprawdź rozmiar pakietu proxy interfejsu API, w przypadku którego występuje błąd wdrożenia.
  2. 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.
  3. 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:

  1. Jeśli na maszynie serwera zarządzania nie ma jeszcze pliku /opt/apigee/customer/application/management-server.properties, utwórz go.
  2. 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
  3. Upewnij się, że właścicielem tego pliku jest apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Uruchom ponownie serwer zarządzania:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. 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.