Errore di timeout

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Sintomo

Il deployment delle revisioni del proxy API tramite l'UI Edge o l'API di gestione non va a buon fine con un 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 della rete di connettività o regole firewall. Solo utenti cloud privati
Pacchetto proxy API grande L'attivazione del processore di messaggi potrebbe richiedere molto tempo se il bundle proxy API è di grandi dimensioni di archiviazione, generando timeout RPC. Utenti cloud pubblici e privati

Problema di connettività di rete

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

Diagnosi

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

    Esempio di output 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 in uno dei processori di messaggi. con l'UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. In base all'output dello stato del deployment per il proxy API, accedi a ciascuno dei messaggi. I processori con l'UUID corrispondente che hanno mostrato l'errore ed eseguire questi 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, riavvia il Processore:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. Ricontrolla lo stato del deployment del proxy API utilizzando la chiamata API di gestione mostrata nel passaggio 1 precedente. Se non ci sono errori, significa che il problema è stato risolto.
  3. Se il problema persiste, verifica la connettività dal server di gestione al messaggio Processore sulla porta 4528 seguendo questa procedura:
    1. Se telnet è disponibile, utilizza telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. Se telnet non è disponibile, utilizza netcat per controllare la connettività come segue:
      nc -vz <MessageProcessor_IP> 4528
      
    3. Se ricevi la risposta "Connessione rifiutata" o "Sessione di connessione scaduta", quindi attiva team delle operazioni di rete.
  4. Testa 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 controllare la connettività come segue:
      nc -vz <management-server-IP> 4526 
      
    3. Se ricevi la risposta "Connessione rifiutata" o "Sessione di connessione scaduta", del team delle operazioni di rete.
  5. Collabora con il team delle operazioni di rete e svolgi le seguenti operazioni:
    1. Assicurati che il protocollo RPC sia consentito sia sul server di gestione che sul messaggio Processore.
    2. Rimuovi eventuali limitazioni del firewall o impostazioni di regole di sicurezza tra i server di gestione e processori di messaggi per consentire la connettività alla porta 4526 sul server di gestione, e connettività dal server di gestione ai processori di messaggi sulla porta 4528.
  6. Ricontrolla lo stato del deployment (fai riferimento al passaggio 1 precedente). Se non vedi errori, indica che l'errore è stato risolto.
  7. Se il problema persiste, controlla se c'è un problema di rete con il processore di messaggi. Se c'è un problema di rete, il riavvio dello specifico processore di messaggi che mostra l'errore di timeout (in base l'output dello stato del deployment) potrebbero 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)

    Esempio di errore di timeout della chiamata 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 noti un errore simile a quello mostrato nell'esempio precedente, aumenta il valore di timeout sul server di gestione; in caso di rallentamento della rete dovrebbe restituire prima che il server di gestione si connetta al processore di messaggi.

Risoluzione

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

  1. Per aumentare il timeout RPC, segui questi passaggi:
    1. Crea il file /opt/apigee/customer/application/management-server.properties la gestione Macchina server, se non esiste già.
    2. Aggiungi la seguente riga al file:
      conf_cluster_rpc.connect.timeout=<time in seconds>
      

      Il valore predefinito di timeout RPC è 10 e si consiglia di aumentarlo a 40 secondi. Impostalo 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 tutte le Server di gestione.
    6. Esegui il deployment del proxy API nell'interfaccia utente di Edge o utilizzando la chiamata API di gestione Edge. Se Il deployment del proxy API viene eseguito senza problemi, a indicare che il problema è stato risolto.
  2. Se il problema persiste, raccogli tcpdump dal server di gestione e dal processore di messaggi. Abilita tcpdump su ciascuno dei server e poi avviare il deployment del proxy API dall'interfaccia utente o utilizzando l'API di gestione:
    1. Esegui il seguente comando tcpdump dal server di gestione:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. Esegui il seguente comando tcpdump 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 su analizzare tcpdumps e risolvere ulteriormente il problema.

Grande Bundle proxy API

Diagnosi

  1. Controlla le dimensioni del bundle proxy API per cui si verifica l'errore di deployment osservati.
  2. Se le dimensioni sono ragionevolmente grandi (10 MB o superiori), è molto probabile che l'elemento Il processore potrebbe richiedere più tempo per attivare il proxy API.
  3. Se la dimensione del bundle proxy API è superiore a 15 MB, vai a Bundle proxy API con dimensioni superiori a 15 MB.

Risoluzione

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su 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. Per aumentare il timeout RPC, segui questi passaggi valore:

  1. Crea il file /opt/apigee/customer/application/management-server.properties sul computer 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 predefinito di timeout RPC è 10 e ti consigliamo di aumentarlo a 40 secondi. Impostalo 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 Server

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