Configurazione del timeout I/O sui router

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Questo documento spiega come configurare il timeout I/O sui router di Apigee Edge.

Il timeout I/O sul router rappresenta il tempo durante il quale il router attende di ricevere una risposta dal processore di messaggi, dopo aver stabilito la connessione e inviato la richiesta al processore di messaggi. Il valore predefinito del timeout I/O sul router è di 57 secondi.

Il timeout I/O per i router può essere aumentato o diminuito rispetto al valore predefinito di 57 secondi in base alle tue esigenze. Può essere configurato nei seguenti modi:

  • In un host virtuale
  • Sul router

Le seguenti proprietà controllano il timeout I/O sui router:

Nome proprietà Località Descrizione
proxy_read_timeout Host virtuale

Specifica il tempo massimo durante il quale il router attende di ricevere una risposta dal processore di messaggi, dopo aver stabilito la connessione e inviato la richiesta al processore di messaggi.

Se non viene ricevuta alcuna risposta dal processore di messaggi entro questo periodo di timeout, il router va in timeout.

Per impostazione predefinita, questa proprietà assume il valore impostato per la conf_load_balancing_load.balancing.driver.proxy.read.timeout proprietà sul router. Il valore predefinito è 57 secondi.

Se questa proprietà viene modificata con un nuovo valore di timeout per un host virtuale specifico, allora vengono interessati solo i proxy API che utilizzano quell'host virtuale specifico.

conf_load_balancing_load.balancing.driver.proxy.read.timeout Router

Specifica il tempo massimo durante il quale il router attende di ricevere una risposta dal processore di messaggi, dopo aver stabilito la connessione e inviato la richiesta al processore di messaggi.

Se non viene ricevuta alcuna risposta dal processore di messaggi entro questo periodo di timeout, il router va in timeout.

Questa proprietà viene utilizzata per tutti gli host virtuali su questo router.

Il valore predefinito di questa proprietà è 57 secondi.

Puoi modificare questa proprietà come spiegato in Configurare il timeout I/O sui router di seguito oppure puoi sovrascrivere questo valore impostando la proprietà proxy_read_timeout a livello di host virtuale.

Puoi impostare l'intervallo di tempo per questa proprietà in un'unità diversa dai secondi utilizzando la seguente notazione:

ms: milliseconds
s:  seconds (default)
m:  minutes
h:  hours
d:  days
w:  weeks
M:  months (length of 30 days)
y:  years (length of 365 days)
conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout Router

Specifica il tempo totale durante il quale il router attende di ricevere una risposta da tutti i Message Processor, dopo aver stabilito la connessione e inviato la richiesta a ogni Message Processor.

Questa impostazione è applicabile quando l'installazione di Edge ha più Message Processor e il tentativo è abilitato in caso di errori. Ha uno dei seguenti valori:

  • Il valore attuale di conf_load_balancing_load.balancing.driver.proxy.read.timeout
  • Il valore predefinito di 57 secondi

Come per la proprietà conf_load_balancing_load.balancing.driver.proxy.read.timeout, puoi specificare intervalli di tempo diversi da quello predefinito (secondi).

Prima di iniziare

Prima di seguire i passaggi descritti in questo documento, assicurati di comprendere i seguenti argomenti:

Configurare il timeout I/O nell'host virtuale

Questa sezione spiega come configurare il timeout I/O nell'host virtuale associato a un organizzazione e a un ambiente. Il timeout I/O può essere configurato nell'host virtuale tramite la proprietà proxy_read_timeout, che rappresenta il valore del timeout I/O in secondi.

Puoi configurare l'host virtuale utilizzando uno dei seguenti metodi:

  • UI Edge
  • API Edge

UI Edge

Per configurare l'host virtuale utilizzando l'UI Edge:

  1. Accedi all'UI Edge.
  2. Vai ad Amministratore > Host virtuali.
  3. Seleziona un ambiente specifico in cui vuoi apportare questa modifica.
  4. Seleziona l'host virtuale specifico per il quale vuoi configurare il nuovo I/O timeout value.
  5. In Proprietà, aggiorna il valore di Timeout di lettura del proxy in secondi.

    Ad esempio, se vuoi modificare il timeout a 120 secondi, digita 120 come mostrato nella figura seguente:

    Valore di timeout di lettura del proxy pari a 120

  6. Salva la modifica.

API Edge

Per configurare l'host virtuale utilizzando l'API Edge:

  1. Ottieni la configurazione dell'host virtuale attuale utilizzando l' API Get virtual host come mostrato di seguito:

    Utente di Public Cloud

    curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    Utente di Private Cloud

    curl -v -X GET http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    Dove:

    {organization-name} è il nome dell'organizzazione

    {environment-name} è il nome dell'ambiente

    {virtualhost-name} è il nome dell'host virtuale

    Configurazione dell'host virtuale di esempio

        {
          "hostAliases": [
            "api.myCompany,com"
          ],
          "interfaces": [],
          "listenOptions": [],
          "name": "secure",
          "port": "443",
          "retryOptions": [],
          "sSLInfo": {
            "ciphers": [],
            "clientAuthEnabled": "false",
            "enabled": "true",
            "ignoreValidationErrors": false,
            "keyAlias": "myCompanyKeyAlias",
            "keyStore": "ref://myCompanyKeystoreref",
            "protocols": []
          },
          "useBuiltInFreeTrialCert": false
        }
  2. Aggiungi la proprietà proxy_read_timeout al payload JSON della configurazione dell'host virtuale esistente in properties con il valore in secondi.

    Ad esempio, per modificare il timeout I/O a 120 secondi, aggiungi il blocco di codice properties come mostrato di seguito:

    Configurazione dell'host virtuale aggiornata di esempio

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
  3. Salva la configurazione dell'host virtuale aggiornata in un file. Ad esempio, virtualhost-payload.json.
  4. Aggiorna la configurazione di virtualhost con la modifica utilizzando l' API Update a virtual host come segue:

    Utente di Public Cloud

    curl -v -X POST Content-Type: application/json
    https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    Utente di Private Cloud

    curl -v -X POST Content-Type: application/json
    http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    Dove:

    {organization-name} è il nome dell'organizzazione

    {environment-name} è il nome dell'ambiente

    {virtualhost-name} è il nome dell'host virtuale

Verificare il timeout I/O sugli host virtuali

Questa sezione spiega come verificare che il timeout I/O sia stato modificato correttamente sull' host virtuale utilizzando l'API Edge.

  1. Esegui l' API Get virtual host per ottenere la configurazione virtualhost come mostrato di seguito:

    Utente di Public Cloud

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    Utente di Private Cloud

    curl -v -X GET http://<management server-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    Dove:

    {organization-name} è il nome dell'organizzazione

    {environment-name} è il nome dell'ambiente

    {virtualhost-name} è il nome dell'host virtuale

  2. Verifica che la proprietà proxy_read_timeout sia stata impostata sul nuovo valore.

    Configurazione dell'host virtuale aggiornata di esempio

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }

    Nell'esempio precedente, tieni presente che proxy_read_timeout è stato impostato con il nuovo valore di 120 secondi.

  3. Se continui a visualizzare il vecchio valore per proxy_read_timeout,verifica di aver seguito correttamente tutti i passaggi descritti in Configurare il timeout I/O nell'host virtuale. Se hai saltato un passaggio, ripeti correttamente tutti i passaggi.
  4. Se non riesci ancora a modificare il timeout I/O, contatta l'assistenza di Apigee Edge.

Configurare il timeout I/O sui router

Questa sezione spiega come configurare il timeout I/O sui router. Il timeout I/O può essere configurato tramite la proprietà del router conf_load_balancing_load.balancing.driver.proxy.read.timeout, che rappresenta il valore del timeout I/O in secondi.

Per configurare il timeout I/O sui router:

  1. Sulla macchina del router, apri il seguente file in un editor. Se non esiste già, crealo.
    /opt/apigee/customer/application/router.properties

    Ad esempio, per aprire il file con vi, inserisci il seguente comando:

    vi /opt/apigee/customer/application/router.properties
  2. Aggiungi una riga nel seguente formato al file properties, sostituendo un valore per time_in_seconds:
  3. conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds

    Ad esempio, per modificare il timeout I/O sul router a 120 secondi, aggiungi la seguente riga:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120

    Puoi anche modificare il timeout I/O in minuti. Ad esempio, per modificare il timeout a due minuti, aggiungi la seguente riga:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
  4. Salva le modifiche.
  5. Assicurati che questo file di proprietà sia di proprietà dell'utente apigee come mostrato di seguito:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  6. Riavvia il router come mostrato di seguito:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Se hai più di un router, ripeti i passaggi precedenti su tutti i router.

Verificare il timeout I/O sui router

Questa sezione spiega come verificare che il timeout I/O sia stato modificato correttamente sui router.

Anche se utilizzi il token conf_load_balancing_load.balancing.driver.proxy.read.timeout per impostare il timeout I/O sul router, devi verificare se la proprietà effettiva proxy_read_timeout è stata impostata con il nuovo valore.

  1. Cerca la proprietà proxy_read_timeout nella /opt/nginx/conf.d directory e verifica se è stata impostata con il nuovo valore come segue:
    grep -ri "proxy_read_timeout" /opt/nginx/conf.d
  2. Se il nuovo valore di timeout I/O viene impostato correttamente sul router, il comando precedente mostra il nuovo valore in tutti i file di configurazione dell'host virtuale.

    Di seguito è riportato il risultato di esempio del comando grep precedente quando il timeout I/O è di 120 secondi:

    /opt/nginx/conf.d/0-default.conf:proxy_read_timeout 120;
    /opt/nginx/conf.d/0-edge-health.conf:proxy_read_timeout 1s;

    Nell'output di esempio precedente, nota che la proprietà proxy_read_timeout è stata impostata con il nuovo valore 120 in 0-default.conf, che è il file di configurazione dell'host virtuale predefinito. Ciò indica che il timeout I/O è stato configurato correttamente a 120 secondi sul router.

  3. Se continui a visualizzare il vecchio valore per la proprietà proxy_read_timeout, verifica di aver seguito correttamente tutti i passaggi descritti in Configurare il timeout I/O sui router. Se hai saltato un passaggio, ripeti correttamente tutti i passaggi.
  4. Se non riesci ancora a modificare il timeout I/O, contatta l'assistenza di Apigee Edge.

Passaggi successivi

Scopri di più sulla configurazione del timeout I/O nel processore di messaggi