Błąd upływu limitu czasu

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Krótki opis problemu

Wdrożenie wersji serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania kończy się niepowodzeniem z przekroczeniem 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 z powodu sieci problemów z połączeniem lub reguł zapory sieciowej. Tylko użytkownicy chmury prywatnej
Duży pakiet serwerów proxy API Aktywacja procesora wiadomości może zająć dużo czasu, jeśli pakiet serwera proxy API jest duży co prowadzi do przekroczenia limitu czasu RPC. Użytkownicy chmury prywatnej i publicznej

Problem z połączeniem sieciowym

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

Diagnostyka

  1. Użyj tego kodu, aby uzyskać stan wdrożenia dla określonego interfejsu API, który wyświetla błąd. wywołanie interfejsu API zarządzania:
    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"
                    } 
    

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

  2. Na podstawie stanu wdrożenia serwera proxy interfejsu API zaloguj się do każdej Procesory z odpowiednim identyfikatorem UUID, które wyświetliły 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 ponownie aplikację Procesor:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. Sprawdź ponownie stan wdrożenia serwera proxy interfejsu API przy użyciu wyświetlonego wywołania interfejsu Management API 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 wiadomością Procesor w porcie 4528, wykonując te czynności:
    1. Jeśli usługa telnet jest dostępna, użyj polecenia telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. Jeśli usługa Telnet jest niedostępna, użyj narzędzia netcat, aby sprawdzić łączność w następujący sposób:
      nc -vz <MessageProcessor_IP> 4528
      
    3. Jeśli pojawi się komunikat „Odmowa połączenia” lub „Osiągnięto limit czasu połączenia”, a następnie zaangażuj zespołu ds. operacji sieciowych.
  4. Przetestuj połączenie procesora wiadomości z serwerem zarządzania na porcie 4526 w ten sposób:
    1. Jeśli usługa telnet jest dostępna, użyj polecenia telnet:
      telnet <management-server-IP> 4526
      
    2. Jeśli usługa Telnet jest niedostępna, użyj narzędzia netcat, aby sprawdzić łączność w następujący sposób:
      nc -vz <management-server-IP> 4526 
      
    3. Jeśli pojawi się komunikat „Odmowa połączenia” lub „Osiągnięto limit czasu połączenia”, ds. działań sieciowych.
  5. Wspólnie z zespołem operacyjnym ds. sieci wykonaj te czynności:
    1. Sprawdź, czy protokół RPC jest dozwolony zarówno na serwerze zarządzania, jak i w komunikacie Procesor.
    2. Usuń wszystkie ograniczenia zapory sieciowej i reguły zabezpieczeń skonfigurowane między serwerami zarządzania i procesora wiadomości, aby umożliwić połączenie 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ł naprawiony.
  7. Jeśli problem nie ustąpi, sprawdź, czy nie występuje problem z siecią na procesorze wiadomości. Jeśli problemu z siecią. Uruchom ponownie określony procesor komunikatów, który wyświetli błąd przekroczenia limitu czasu (zgodnie z dane wyjściowe stanu wdrożenia) mogą rozwiązać problem:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. Jeśli problem będzie nadal występował, sprawdź dzienniki serwera zarządzania pod adresem: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Przykładowy błąd przekroczenia limitu czasu wywołania z dziennika 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 RPC limit czasu na serwerze zarządzania, dzięki czemu w przypadku spowolnienia sieci powinna zostać czas na połączenie serwera zarządzania z procesorem wiadomości.

Rozdzielczość

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

  1. Aby zwiększyć limit czasu RPC, wykonaj te czynności:
    1. Tworzenie pliku /opt/apigee/customer/application/management-server.properties Kierownictwo Komputer serwera, 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, ale zalecamy zwiększenie jej do 40 sek. Ustaw go w następujący 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ż jeden serwer zarządzania, powtórz powyższe kroki na wszystkich Serwery zarządzania.
    6. Wdróż serwer proxy interfejsu API w interfejsie Edge lub za pomocą wywołania interfejsu Edge Management API. Jeśli Serwer proxy interfejsu API jest wdrażany bez problemów, co oznacza, że problem został rozwiązany.
  2. Jeśli problem będzie się powtarzał, zbierz tcpdump z serwera zarządzania i procesora wiadomości. Włącz tcpdump na każdym z serwerów, a następnie zainicjuj wdrożenie serwera proxy interfejsu API z poziomu interfejsu użytkownika lub za pomocą interfejsu API do zarządzania:
    1. Uruchom to 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 w procesorze wiadomości:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. Aby uzyskać pomoc, skontaktuj się z zespołem pomocy Apigee Edge analiza tcpdumps i rozwiązanie problemu.

Duży Pakiet serwerów proxy API

Diagnostyka

  1. Sprawdź rozmiar pakietu serwera proxy interfejsów API, w przypadku którego występuje błąd wdrażania zaobserwowane.
  2. Jeśli rozmiar wiadomości jest dość duży (co najmniej 10 MB), Procesor może potrzebować więcej czasu na aktywację serwera proxy interfejsu API.
  3. Jeśli rozmiar pakietu serwera proxy interfejsu API przekracza 15 MB, przejdź do Rozmiar pakietu serwerów proxy API przekracza 15 MB.

Rozdzielczość

Uwaga: tylko użytkownicy Edge Private Cloud mogą wykonywać poniższe czynności. Jeśli korzystają z Edge Public Cloud, 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 aktywować duże pakiety proxy interfejsów API. Aby zwiększyć limit czasu RPC, wykonaj te czynności: wartość:

  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, ale zalecamy zwiększenie jej do 40 sekund. Ustaw go w następujący 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ż jeden serwer zarządzania, powtórz powyższe kroki dla wszystkich Serwery.

Jeśli problem będzie nadal występował, skontaktuj się z zespołem pomocy Apigee Edge w celu uzyskania dostępu do dalszą pomoc.