Como configurar o tempo limite de E/S em roteadores

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Neste documento, explicamos como configurar o tempo limite de E/S nos roteadores do Apigee Edge.

O tempo limite de E/S do roteador representa o tempo que o roteador aguarda para receber uma resposta do processador de mensagens depois de estabelecer a conexão e enviar a solicitação ao processador de mensagens. O valor padrão do tempo limite de E/S no roteador é de 57 segundos.

O tempo limite de E/S dos roteadores pode ser aumentado ou reduzido a partir do valor padrão de 57 segundos, com base nas suas necessidades. Ele pode ser configurado das seguintes maneiras:

  • Em um host virtual
  • No roteador

As seguintes propriedades controlam o tempo limite de E/S nos roteadores:

Nome da propriedade Local Descrição
proxy_read_timeout Host virtual

Especifica o tempo máximo que o roteador espera para receber uma resposta do processador de mensagens depois de estabelecer a conexão e enviar a solicitação ao processador de mensagens.

Se não houver resposta do processador de mensagens dentro desse período, o roteador vai expirar.

Por padrão, essa propriedade usa o valor definido para a propriedade conf_load_balancing_load.balancing.driver.proxy.read.timeout no roteador. O valor padrão é 57 segundos.

Se essa propriedade for modificada com um novo valor de tempo limite para um host virtual específico, somente os proxies de API que usam esse host virtual específico serão afetados.

conf_load_balancing_load.balancing.driver.proxy.read.timeout Roteador

Especifica o tempo máximo que o roteador espera para receber uma resposta do processador de mensagens depois de estabelecer a conexão e enviar a solicitação ao processador de mensagens.

Se não houver resposta do processador de mensagens dentro desse período, o roteador vai expirar.

Esta propriedade é usada para todos os hosts virtuais neste roteador.

O valor padrão dessa propriedade é 57 segundos.

É possível modificar essa propriedade, conforme explicado em Como configurar o tempo limite de E/S nos roteadores abaixo, ou substituir esse valor definindo a propriedade proxy_read_timeout no nível do host virtual.

É possível definir o intervalo de tempo para essa propriedade como algo diferente de segundos usando a seguinte notação:

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 Roteador

Especifica o tempo total que o roteador espera para receber uma resposta de todos os processadores de mensagens depois de estabelecer a conexão e enviar a solicitação para cada processador de mensagens.

Isso é aplicável quando a instalação do Edge tem vários processadores de mensagens e a nova tentativa é ativada quando ocorrem erros. O valor pode ser um dos seguintes:

  • O valor atual de conf_load_balancing_load.balancing.driver.proxy.read.timeout
  • O valor padrão de 57 segundos

Assim como na propriedade conf_load_balancing_load.balancing.driver.proxy.read.timeout, é possível especificar intervalos de tempo diferentes do padrão (segundos).

Antes de começar

Antes de seguir as etapas deste documento, é importante entender os seguintes tópicos:

Configurar o tempo limite de E/S no host virtual

Nesta seção, explicamos como configurar o tempo limite de E/S no host virtual associado a uma organização e um ambiente. O tempo limite de E/S pode ser configurado no host virtual por meio da propriedade proxy_read_timeout, que representa o valor do tempo limite de E/S em segundos.

Configure o host virtual usando um dos seguintes métodos:

  • interface do Edge
  • API Edge

interface do Edge

Para configurar o host virtual usando a IU do Edge, faça o seguinte:

  1. Faça login na IU do Edge.
  2. Acesse Administrador > Hosts virtuais.
  3. Selecione um Ambiente específico em que você quer fazer essa alteração.
  4. Selecione o host virtual específico em que você quer configurar o novo valor de tempo limite de E/S.
  5. Em Propriedades, atualize o valor do Tempo limite de leitura do proxy em segundos.

    Por exemplo, se você quiser mudar o tempo limite para 120 segundos, digite 120, conforme mostrado na figura a seguir:

    Valor do tempo limite de leitura do proxy de 120

  6. Salve a mudança.

API Edge

Para configurar o host virtual usando a API Edge, faça o seguinte:

  1. Encontre a configuração do host virtual atual usando a API Acessar host virtual, conforme mostrado abaixo:

    Usuário da nuvem pública

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

    Usuário da nuvem privada

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

    Em que:

    {organization-name} é o nome da organização.

    {environment-name} é o nome do ambiente;

    {virtualhost-name} é o nome do host virtual.

    Exemplo de configuração do virtualhost

        {
          "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. Adicione a propriedade proxy_read_timeout ao payload JSON de configuração do host virtual atual em properties com o valor em segundos.

    Por exemplo, para mudar o tempo limite de E/S para 120 segundos, adicione o bloco de código properties, conforme mostrado abaixo:

    Exemplo de configuração atualizada do host virtual

    {
      "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. Salve a configuração atualizada do host virtual em um arquivo. Exemplo: virtualhost-payload.json
  4. Atualize a configuração virtualhost com a mudança usando a API Atualizar um host virtual da seguinte maneira:

    Usuário da nuvem pública

    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>
                

    Usuário da nuvem privada

    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>
                

    Em que:

    {organization-name} é o nome da organização.

    {environment-name} é o nome do ambiente;

    {virtualhost-name} é o nome do host virtual.

Como verificar o tempo limite de E/S em hosts virtuais

Nesta seção, explicamos como verificar se o tempo limite de E/S foi modificado com êxito no host virtual usando a API Edge.

  1. Execute a API Get virtual host para ver a configuração virtualhost, conforme mostrado abaixo:

    Usuário da nuvem pública

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

    Usuário da nuvem privada

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

    Em que:

    {organization-name} é o nome da organização.

    {environment-name} é o nome do ambiente;

    {virtualhost-name} é o nome do host virtual.

  2. Verifique se a propriedade proxy_read_timeout foi definida com o novo valor.

    Exemplo de configuração atualizada do host virtual

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

    No exemplo acima, observe que o proxy_read_timeout foi definido com o novo valor de 120 segundos.

  3. Se o valor antigo de proxy_read_timeout, ainda aparecer, verifique se você seguiu todas as etapas descritas em Como configurar o tempo limite de E/S no host virtual corretamente. Se você esqueceu alguma etapa, repita todas as etapas corretamente.
  4. Se ainda assim não for possível modificar o tempo limite de E/S, entre em contato com o suporte do Apigee Edge.

Como configurar o tempo limite de E/S em roteadores

Esta seção explica como configurar o tempo limite de E/S nos roteadores. O tempo limite de E/S pode ser configurado por meio da propriedade do roteador conf_load_balancing_load.balancing.driver.proxy.read.timeout, que representa o valor desse tempo em segundos.

Para configurar o tempo limite de E/S nos roteadores, faça o seguinte:

  1. Na máquina roteador, abra o arquivo a seguir em um editor. Se ainda não existir, crie-o.
    /opt/apigee/customer/application/router.properties
    

    Por exemplo, para abrir o arquivo com vi, digite o seguinte comando:

    vi /opt/apigee/customer/application/router.properties
    
  2. Adicione uma linha no seguinte formato ao arquivo properties, substituindo um valor por time_in_seconds:
  3. conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds
    

    Por exemplo, para alterar o tempo limite de E/S no roteador para 120 segundos, adicione a seguinte linha:

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

    Você também pode modificar o tempo limite de E/S em minutos. Por exemplo, para mudar o tempo limite para dois minutos, adicione a seguinte linha:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
    
  4. Salve as mudanças.
  5. Verifique se esse arquivo de propriedades pertence ao usuário apigee, conforme mostrado abaixo:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
    
  6. Reinicie o roteador conforme mostrado abaixo:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
    
  7. Se você tiver mais de um roteador, repita as etapas acima para todos eles.

Como verificar o tempo limite de E/S nos roteadores

Esta seção explica como verificar se o tempo limite de E/S foi modificado com êxito nos roteadores.

Mesmo que você use o token conf_load_balancing_load.balancing.driver.proxy.read.timeout para definir o tempo limite de E/S no roteador, é necessário verificar se a propriedade proxy_read_timeout real foi definida com o novo valor.

  1. Pesquise a propriedade proxy_read_timeout no diretório /opt/nginx/conf.d e verifique se ela foi definida com o novo valor da seguinte maneira:
    grep -ri "proxy_read_timeout" /opt/nginx/conf.d
    
  2. Se o novo valor de tempo limite de E/S for definido com êxito no roteador, o comando acima vai mostrar o novo valor em todos os arquivos de configuração de host virtual.

    Confira a seguir o exemplo de resultado do comando grep acima, quando o tempo limite de E/S é de 120 segundos:

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

    No exemplo de saída acima, observe que a propriedade proxy_read_timeout foi definida com o novo valor 120 em 0-default.conf, que é o arquivo de configuração do host virtual padrão. Isso indica que o tempo limite de E/S foi configurado com sucesso para 120 segundos no roteador.

  3. Se o valor antigo da propriedade proxy_read_timeout ainda aparecer, verifique se você seguiu todas as etapas descritas em Como configurar o tempo limite de E/S nos roteadores corretamente. Se você esqueceu alguma etapa, repita todas as etapas corretamente.
  4. Se ainda assim não for possível modificar o tempo limite de E/S, entre em contato com o suporte do Apigee Edge.

E agora?

Saiba mais sobre Como configurar o tempo limite de E/S no processador de mensagens.