Настройка тайм-аута ввода-вывода на маршрутизаторах

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

В этом документе объясняется, как настроить тайм-аут ввода-вывода на маршрутизаторах Apigee Edge.

Тайм-аут ввода-вывода на маршрутизаторе представляет собой время, в течение которого маршрутизатор ожидает получения ответа от обработчика сообщений после установления соединения и отправки запроса обработчику сообщений. Значение по умолчанию для тайм-аута ввода-вывода на маршрутизаторе составляет 57 секунд.

Время ожидания ввода-вывода для маршрутизаторов можно увеличить или уменьшить по сравнению со значением по умолчанию в 57 секунд в зависимости от ваших потребностей. Его можно настроить следующими способами:

  • В виртуальном хосте
  • На роутере

Следующие параметры управляют тайм-аутом ввода-вывода на маршрутизаторах:

Название объекта недвижимости Расположение Описание
proxy_read_timeout Виртуальный хост

Указывает максимальное время, в течение которого маршрутизатор ожидает ответа от обработчика сообщений после установления соединения и отправки запроса обработчику сообщений.

Если в течение указанного периода ожидания от обработчика сообщений не поступит ответа, маршрутизатор выдаст ошибку тайм-аута.

По умолчанию это свойство принимает значение, установленное для свойства conf_load_balancing_load.balancing.driver.proxy.read.timeout маршрутизатора. Значение по умолчанию — 57 секунд .

Если это свойство изменяется с новым значением таймаута для конкретного виртуального хоста, то это затрагивает только API-прокси, использующие этот конкретный виртуальный хост.

conf_load_balancing_load.balancing.driver.proxy.read.timeout Маршрутизатор

Указывает максимальное время, в течение которого маршрутизатор ожидает ответа от обработчика сообщений после установления соединения и отправки запроса обработчику сообщений.

Если в течение указанного периода ожидания от обработчика сообщений не поступит ответа, маршрутизатор выдаст ошибку тайм-аута.

Это свойство используется для всех виртуальных хостов на этом маршрутизаторе.

Значение по умолчанию для этого параметра составляет 57 секунд .

Вы можете либо изменить это свойство, как описано в разделе «Настройка таймаута ввода-вывода на маршрутизаторах» ниже, либо переопределить это значение, установив свойство proxy_read_timeout на уровне виртуального хоста.

Вы можете задать временной интервал для этого свойства не в секундах, используя следующую запись:

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 Маршрутизатор

Указывает общее время, в течение которого маршрутизатор ожидает ответа от всех обработчиков сообщений после установления соединения и отправки запроса каждому обработчику сообщений.

Это применимо, если в вашей установке Edge используется несколько обработчиков сообщений и включена функция повторной попытки при возникновении ошибок. Значение может быть одним из следующих:

  • Текущее значение параметра conf_load_balancing_load.balancing.driver.proxy.read.timeout
  • Значение по умолчанию — 57 секунд.

Как и в случае со свойством conf_load_balancing_load.balancing.driver.proxy.read.timeout , вы можете указать временные интервалы, отличные от значения по умолчанию (секунды).

Прежде чем начать

Прежде чем приступить к выполнению действий, описанных в этом документе, убедитесь, что вы понимаете следующие темы:

Настройка таймаута ввода-вывода в виртуальном хосте

В этом разделе объясняется, как настроить тайм-аут ввода-вывода на виртуальном хосте, связанном с организацией и средой. Тайм-аут ввода-вывода можно настроить на виртуальном хосте с помощью свойства proxy_read_timeout , которое представляет значение тайм-аута ввода-вывода в секундах.

Виртуальный хост можно настроить одним из следующих способов:

  • Edge UI
  • API Edge

Edge UI

Для настройки виртуального хоста с помощью пользовательского интерфейса Edge выполните следующие действия:

  1. Войдите в пользовательский интерфейс Edge .
  2. Перейдите в раздел Администрирование > Виртуальные хосты .
  3. Выберите конкретную среду , в которой вы хотите внести это изменение.
  4. Выберите конкретный виртуальный хост, для которого вы хотите настроить новое значение таймаута ввода-вывода.
  5. В разделе «Свойства» измените значение параметра « Время ожидания чтения прокси-сервера» в секундах.

    Например, если вы хотите установить время ожидания на 120 секунд, введите 120, как показано на следующем рисунке:

    Proxy read timeout value of 120

  6. Сохраните сдачу.

API Edge

Для настройки виртуального хоста с использованием Edge API выполните следующие действия:

  1. Получите текущую конфигурацию виртуального хоста, используя API Get virtual host , как показано ниже:

    Пользователь публичного облака

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

    Пользователь частного облака

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

    Где:

    {organization-name} — это название организации.

    {environment-name} — это название среды.

    {virtualhost-name} — это имя виртуального хоста.

    Пример конфигурации виртуального хоста

        {
          "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. Добавьте свойство proxy_read_timeout в существующую JSON-конфигурацию виртуального хоста в разделе properties , указав значение в секундах.

    Например, чтобы изменить время ожидания ввода-вывода на 120 секунд, добавьте блок кода properties , как показано ниже:

    Пример обновленной конфигурации виртуального хоста.

    {
      "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. Сохраните обновлённую конфигурацию виртуального хоста в файл. Например, virtualhost-payload.json .
  4. Обновите конфигурацию virtualhost внеся изменения, используя API обновления виртуального хоста следующим образом:

    Пользователь публичного облака

    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>
                

    Пользователь частного облака

    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>
                

    Где:

    {organization-name} — это название организации.

    {environment-name} — это название среды.

    {virtualhost-name} — это имя виртуального хоста.

Проверка таймаута ввода-вывода на виртуальных хостах

В этом разделе объясняется, как проверить успешность изменения времени ожидания ввода-вывода на виртуальном хосте с помощью Edge API.

  1. Выполните команду Get virtual host API, чтобы получить конфигурацию virtualhost , как показано ниже:

    Пользователь публичного облака

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

    Пользователь частного облака

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

    Где:

    {organization-name} — это название организации.

    {environment-name} — это название среды.

    {virtualhost-name} — это имя виртуального хоста.

  2. Убедитесь, что свойство proxy_read_timeout установлено на новое значение.

    Пример обновленной конфигурации виртуального хоста.

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

    В приведенном выше примере обратите внимание, что параметр proxy_read_timeout был установлен на новое значение 120 секунд.

  3. Если значение параметра proxy_read_timeout, убедитесь, что вы правильно выполнили все шаги, описанные в разделе «Настройка таймаута ввода-вывода в виртуальном хосте» . Если вы пропустили какой-либо шаг, повторите все шаги заново.
  4. Если вам по-прежнему не удается изменить время ожидания ввода-вывода, обратитесь в службу поддержки Apigee Edge .

Настройка таймаута ввода-вывода на маршрутизаторах

В этом разделе объясняется, как настроить тайм-аут ввода-вывода на маршрутизаторах. Тайм-аут ввода-вывода можно настроить с помощью свойства маршрутизатора conf_load_balancing_load.balancing.driver.proxy.read.timeout , которое представляет значение тайм-аута ввода-вывода в секундах.

Для настройки таймаута ввода-вывода на маршрутизаторах выполните следующие действия:

  1. На маршрутизаторе откройте следующий файл в текстовом редакторе. Если он еще не существует, создайте его.
    /opt/apigee/customer/application/router.properties

    Например, чтобы открыть файл с помощью vi , введите следующую команду:

    vi /opt/apigee/customer/application/router.properties
  2. Добавьте в файл properties строку следующего формата, заменив значение параметра time_in_seconds :
  3. conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds

    Например, чтобы изменить время ожидания ввода-вывода на маршрутизаторе на 120 секунд, добавьте следующую строку:

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

    Вы также можете изменить время ожидания ввода-вывода в минутах. Например, чтобы установить время ожидания на две минуты, добавьте следующую строку:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
  4. Сохраните изменения.
  5. Убедитесь, что этот файл свойств принадлежит пользователю apigee , как показано ниже:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  6. Перезагрузите маршрутизатор, как показано ниже:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Если у вас несколько маршрутизаторов, повторите описанные выше шаги на всех маршрутизаторах.

Проверка таймаута ввода-вывода на маршрутизаторах.

В этом разделе объясняется, как проверить, что время ожидания ввода-вывода на маршрутизаторах было успешно изменено.

Даже если вы используете токен conf_load_balancing_load.balancing.driver.proxy.read.timeout для установки таймаута ввода-вывода на маршрутизаторе, необходимо убедиться, что фактическое свойство proxy_read_timeout было установлено с новым значением.

  1. Найдите свойство proxy_read_timeout в каталоге /opt/nginx/conf.d и проверьте, установлено ли для него новое значение, как показано ниже:
    grep -ri "proxy_read_timeout" /opt/nginx/conf.d
  2. Если новое значение таймаута ввода-вывода успешно установлено на маршрутизаторе, то приведенная выше команда отобразит новое значение во всех файлах конфигурации виртуальных хостов.

    Ниже приведён пример результата выполнения команды grep при таймауте ввода-вывода в 120 секунд:

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

    В приведенном выше примере обратите внимание, что свойство proxy_read_timeout было установлено на новое значение 120 в 0-default.conf , который является конфигурационным файлом для виртуального хоста по умолчанию. Это указывает на то, что таймаут ввода-вывода успешно настроен на 120 секунд на маршрутизаторе.

  3. Если для свойства proxy_read_timeout по-прежнему отображается старое значение, убедитесь, что вы правильно выполнили все шаги, описанные в разделе «Настройка таймаута ввода-вывода на маршрутизаторах» . Если вы пропустили какой-либо шаг, повторите все шаги заново.
  4. Если вам по-прежнему не удается изменить время ожидания ввода-вывода, обратитесь в службу поддержки Apigee Edge .

Что дальше?

Узнайте о настройке тайм-аута ввода-вывода в обработчике сообщений.