Błąd upływu limitu czasu

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

Krótki opis problemu

Wdrożenie wersji serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Management API kończy się niepowodzeniem 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

Oto typowe przyczyny:

Przyczyna Szczegóły Dla:
Problem z połączeniem sieciowym Błąd komunikacji między serwerem zarządzania a procesorem wiadomości spowodowany problemami z połączeniem sieciowym lub regułami zapory sieciowej. Tylko użytkownicy chmury prywatnej
Duży pakiet proxy API Aktywowanie procesora wiadomości może zająć dużo czasu, jeśli pakiet proxy interfejsu API jest duży, co powoduje przekroczenie limitu czasu RPC. Prywatni i publiczny użytkownicy chmury

Problem z połączeniem sieciowym

Uwaga: poniższe czynności mogą wykonywać tylko użytkownicy Private Cloud Edge. Jeśli korzystasz z chmury publicznej Edge, skontaktuj się z zespołem pomocy Apigee Edge.

Diagnostyka

  1. Uzyskaj stan wdrożenia określonego interfejsu API, który wyświetla błąd, korzystając z 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 pokazujące błąd:

    { 
                    "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"
                    } 
    

    Powyższe przykładowe dane wyjściowe wskazują, że błąd wystąpił w jednym z procesorów wiadomości o identyfikatorze UUID „ebbc1078-cbde-4a00-a7db-66a3c1b2b748”.

  2. Na podstawie danych wyjściowych stanu wdrożenia dla serwera proxy interfejsu API zaloguj się do każdego procesora wiadomości przy użyciu odpowiedniego identyfikatora UUID, który wyświetlił błąd, i wykonaj te czynności:
    1. Sprawdź, czy procesor wiadomości nasłuchuje na porcie 4528:
      netstat -an | grep LISTEN | grep 4528
      

      Jeśli procesor wiadomości 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 serwera proxy interfejsu API, korzystając z wywołania interfejsu Management API pokazanego w kroku 1 powyżej. Jeśli nie ma błędów, oznacza to, że problem został rozwiązany.
  3. Jeśli problem będzie się powtarzać, sprawdź połączenie serwera zarządzania z procesorem wiadomości na porcie 4528, wykonując te czynności:
    1. Jeśli dostępny jest protokół Telnet, użyj go:
      telnet <MessageProcessor_IP> 4528
      
    2. Jeśli protokół telnet jest niedostępny, użyj narzędzia netcat, aby sprawdzić połączenie w następujący sposób:
      nc -vz <MessageProcessor_IP> 4528
      
    3. Jeśli wyświetli się odpowiedź „Odmowa połączenia” lub „Upłynął limit czasu połączenia”, zaangażuj zespół ds. operacji sieciowych.
  4. Przetestuj połączenie między procesorem wiadomości a serwerem zarządzania na porcie 4526, wykonując te czynności:
    1. Jeśli dostępny jest protokół Telnet, użyj go:
      telnet <management-server-IP> 4526
      
    2. Jeśli protokół telnet jest niedostępny, użyj narzędzia netcat, aby sprawdzić połączenie w następujący sposób:
      nc -vz <management-server-IP> 4526 
      
    3. Jeśli wyświetli się odpowiedź „Odmowa połączenia” lub „Upłynął limit czasu połączenia”, skontaktuj się z zespołem operacyjnym ds. sieci.
  5. Skontaktuj się z zespołem operacyjnym ds. sieci i wykonaj te czynności:
    1. Sprawdź, czy protokół RPC jest dozwolony zarówno na serwerze zarządzania, jak i na procesorze wiadomości.
    2. Usuń wszystkie ograniczenia zapory sieciowej i reguły zabezpieczeń skonfigurowane między serwerami zarządzania a procesorami wiadomości, aby umożliwić łączenie się z portem 4526 na serwerze zarządzania oraz połączenia między serwerem zarządzania a procesorami wiadomości przez port 4528.
  6. Ponownie sprawdź stan wdrożenia (patrz krok 1 powyżej). Jeśli nie widzisz żadnych błędów, oznacza to, że błąd został rozwiązany.
  7. Jeśli problem będzie się powtarzał, sprawdź, czy nie występuje problem z siecią w procesorze wiadomości. W przypadku problemu z siecią problem może rozwiązać ponowne uruchomienie określonego procesora wiadomości, który wyświetla błąd przekroczenia limitu czasu (zgodnie ze stanem wdrożenia):
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. Jeśli problem nadal występuje, sprawdź logi serwera zarządzania pod adresem: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Błąd przekroczenia limitu czasu przykładowego 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 dało to czas na nawiązanie połączenia serwera zarządzania z procesorem wiadomości.

Rozdzielczość

Uwaga: poniższe czynności mogą wykonywać tylko użytkownicy Private Cloud 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. Utwórz plik /opt/apigee/customer/application/management-server.properties serwer zarządzania, jeśli jeszcze nie istnieje.
    2. Dodaj do tego pliku ten wiersz:
      conf_cluster_rpc.connect.timeout=<time in seconds>
      

      Domyślna wartość limitu czasu RPC wynosi 10 i zalecamy zwiększenie jej do 40 sekund. Ustaw go w ten sposób:

      conf_cluster_rpc.connect.timeout=40
      
    3. Sprawdź, czy ten plik należy do apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
      
    4. Ponownie uruchom 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 kroki na wszystkich tych serwerach.
    6. Wdróż serwer proxy interfejsu API w interfejsie użytkownika Edge lub za pomocą wywołania interfejsu Edge Management API. Jeśli serwer proxy interfejsu API zostanie wdrożony bez problemów, oznacza to, że problem został rozwiązany.
  2. Jeśli problem będzie się powtarzać, zbierz polecenie tcpdump z serwera zarządzania i procesora wiadomości. Włącz polecenie tcpdump na każdym z serwerów, a następnie zainicjuj wdrożenie serwera proxy interfejsu API z poziomu interfejsu użytkownika lub interfejsu API zarządzania:
    1. Uruchom poniższe polecenie tcpdump z serwera zarządzania:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. Uruchom poniższe polecenie tcpdump z procesora wiadomości:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. Skontaktuj się z zespołem pomocy Apigee Edge, aby uzyskać pomoc w analizie zrzutów tcpdumps i lepiej rozwiązać problem.

Duży pakiet proxy interfejsu API

Diagnostyka

  1. Sprawdź rozmiar pakietu proxy interfejsu API, w przypadku którego zaobserwowany błąd wdrożenia.
  2. Jeśli rozmiar jest dosyć duży (10 MB lub więcej), bardzo prawdopodobne jest, że procesor wiadomości będzie potrzebować więcej czasu na aktywację serwera proxy interfejsu API.
  3. Jeśli rozmiar pakietu serwera proxy API przekracza 15 MB, przejdź do pakietu proxy interfejsu API większego niż 15 MB.

Rozdzielczość

Uwaga: poniższe czynności mogą wykonywać tylko użytkownicy Private Cloud 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 podmiot przetwarzający wiadomości miał wystarczająco dużo czasu na aktywowanie dużych pakietów proxy interfejsów API. Aby zwiększyć wartość limitu czasu RPC, wykonaj te czynności:

  1. Utwórz plik /opt/apigee/customer/application/management-server.properties na serwerze zarządzania, jeśli jeszcze nie istnieje.
  2. Dodaj do tego pliku ten wiersz:
    conf_cluster_rpc.connect.timeout=<time in seconds>
    

    Domyślna wartość limitu czasu RPC wynosi 10 i zaleca się zwiększenie jej do 40 sekund. Ustaw go w ten sposób:

    conf_cluster_rpc.connect.timeout=40
    
  3. Sprawdź, czy ten plik należy do apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    
  4. Ponownie uruchom 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 kroki na wszystkich tych serwerach.

Jeśli problem będzie nadal występował, skontaktuj się z zespołem pomocy Apigee Edge, aby uzyskać dalszą pomoc.