Errore di timeout

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Sintomo

Il deployment delle revisioni del proxy API tramite la UI di gestione o l'API di gestione non riesce e genera un errore di timeout.

Messaggi di errore

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

Possibili cause

Le cause tipiche di questo problema sono:

Causa Dettagli Per
Problema di connettività di rete Errore di comunicazione tra il server di gestione e il processore di messaggi a causa di problemi di connettività di rete o regole firewall. Solo utenti Private Cloud
Bundle proxy API di grandi dimensioni L'attivazione del processore di messaggi potrebbe richiedere molto tempo se il bundle proxy API ha dimensioni elevate, causando timeout RPC. Utenti cloud privati e pubblici

Problema di connettività di rete

Nota: solo gli utenti del cloud privato Edge possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza Apigee Edge.

Diagnostica

  1. Ottieni lo stato del deployment per l'API specifica che mostra l'errore utilizzando la seguente chiamata API di gestione:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Output di esempio che mostra l'errore:

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

    L'output di esempio riportato sopra mostra che l'errore si è verificato su uno dei processori di messaggi che hanno l'UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. In base all'output dello stato del deployment per il proxy API, accedi a ciascun processore di messaggi con l'UUID corrispondente che ha mostrato l'errore ed esegui i seguenti passaggi:
    1. Controlla se il processore di messaggi è in ascolto sulla porta 4528:
      netstat -an | grep LISTEN | grep 4528
      

      Se il processore di messaggi non è in ascolto sulla porta 4528, riavvialo:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. Ricontrolla lo stato di deployment del proxy API utilizzando la chiamata API di gestione mostrata nel passaggio 1 riportato sopra. Se non ci sono errori, significa che il problema è stato risolto.
  3. Se il problema persiste, verifica la connettività dal server di gestione al processore di messaggi sulla porta 4528 seguendo questi passaggi:
    1. Se Telnet è disponibile, utilizza Telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. Se Telnet non è disponibile, utilizza netcat per verificare la connettività come segue:
      nc -vz <MessageProcessor_IP> 4528
      
    3. Se ricevi la risposta "Connessione rifiutata" o "Sessione di connessione scaduta", coinvolgi il team delle operazioni di rete.
  4. Verifica la connettività dal processore di messaggi al server di gestione sulla porta 4526 seguendo questi passaggi:
    1. Se Telnet è disponibile, utilizza Telnet:
      telnet <management-server-IP> 4526
      
    2. Se Telnet non è disponibile, utilizza netcat per verificare la connettività come segue:
      nc -vz <management-server-IP> 4526 
      
    3. Se ricevi la risposta "Connessione rifiutata" o "Timeout della connessione", coinvolgi il team delle operazioni di rete.
  5. Collabora con il team operativo di rete e segui questi passaggi:
    1. Assicurati che il protocollo RPC sia consentito sia sul server di gestione sia sul processore di messaggi.
    2. Rimuovi eventuali limitazioni del firewall o la configurazione di regole di sicurezza tra i server di gestione e i processori di messaggi per consentire la connettività alla porta 4526 sul server di gestione e la connettività dal server di gestione ai processori di messaggi sulla porta 4528.
  6. Ricontrolla lo stato del deployment (fai riferimento al passaggio 1 sopra). Se non vedi alcun errore, significa che l'errore è stato risolto.
  7. Se il problema persiste, controlla se c'è un problema di rete sul processore di messaggi. Se si verifica un problema di rete, il riavvio dello specifico processore di messaggi che mostra l'errore di timeout (in base all'output dello stato del deployment) potrebbe risolvere il problema:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. Se il problema persiste, controlla i log del server di gestione all'indirizzo: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Errore di timeout della chiamata di esempio dal log del server di gestione

    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] 
            
    

    Se riscontri un errore simile a quello mostrato nell'esempio sopra, aumenta il timeout RPC sul server di gestione in modo che, in caso di rallentamento della rete, il server di gestione abbia il tempo di connettersi al processore di messaggi.

Risoluzione

Nota: solo gli utenti del cloud privato Edge possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza Apigee Edge.

  1. Segui questi passaggi per aumentare il timeout RPC:
    1. Crea il file /opt/apigee/customer/application/management-server.properties sulla macchina del server di gestione, se non esiste già.
    2. Aggiungi la seguente riga a questo file:
      conf_cluster_rpc.connect.timeout=<time in seconds>
      

      Il valore di timeout RPC predefinito è 10 ed è consigliabile aumentarlo a 40 secondi. Impostala come segue:

      conf_cluster_rpc.connect.timeout=40
      
    3. Assicurati che questo file sia di proprietà di apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
      
    4. Riavvia il server di gestione:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
      
    5. Se disponi di più server di gestione, ripeti i passaggi precedenti su tutti i server di gestione.
    6. Esegui il deployment del proxy API nell'interfaccia utente Edge o utilizzando la chiamata API Edge Management. Se il deployment del proxy API viene eseguito senza problemi, significa che il problema è stato risolto.
  2. Se il problema persiste, raccogli il comando tcpdump dal server di gestione e dal processore di messaggi. Abilita il comando tcpdump su ciascuno dei server, quindi avvia il deployment del proxy API dall'interfaccia utente o utilizzando l'API di gestione:
    1. Esegui il comando tcpdump riportato di seguito dal server di gestione:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. Esegui il comando tcpdump riportato di seguito dal processore di messaggi:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. Contatta l'assistenza Apigee Edge per ricevere assistenza per l'analisi di tcpdumps e per risolvere ulteriormente il problema.

Bundle proxy API di grandi dimensioni

Diagnostica

  1. Controlla la dimensione del bundle proxy API per cui si sta osservando l'errore di deployment.
  2. Se le dimensioni sono ragionevolmente grandi (10 MB o superiori), è molto probabile che il processore di messaggi abbia bisogno di più tempo per attivare il proxy API.
  3. Se le dimensioni del bundle proxy API sono superiori a 15 MB, vai alla sezione Bundle del proxy API superiori a 15 MB.

Risoluzione

Nota: solo gli utenti del cloud privato Edge possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza Apigee Edge.

Aumenta il timeout RPC sul server di gestione in modo che il processore di messaggi abbia tempo sufficiente per attivare bundle proxy API di grandi dimensioni. Completa i seguenti passaggi per aumentare il valore di timeout RPC:

  1. Crea il file /opt/apigee/customer/application/management-server.properties sulla macchina del server di gestione, se non esiste già.
  2. Aggiungi la seguente riga a questo file:
    conf_cluster_rpc.connect.timeout=<time in seconds>
    

    Il valore di timeout RPC predefinito è 10 ed è consigliabile aumentarlo a 40 secondi. Impostala come segue:

    conf_cluster_rpc.connect.timeout=40
    
  3. Assicurati che questo file sia di proprietà di apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    
  4. Riavvia il server di gestione:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. Se disponi di più server di gestione, ripeti i passaggi precedenti su tutti i server di gestione.

Se il problema persiste, contatta l'assistenza Apigee Edge per ulteriore assistenza.