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

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

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

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

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

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

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

Название ресурса Местоположение Описание
proxy_read_timeout Виртуальный хост

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

Если Message Processor не ответит в течение этого времени ожидания, маршрутизатор превысит время ожидания.

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

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

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

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

Если Message Processor не ответит в течение этого времени ожидания, маршрутизатор превысит время ожидания.

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

Значение по умолчанию – 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
  • Edge API

Интерфейс Edge

Чтобы настроить виртуальный хост с помощью интерфейса Edge, выполните следующие действия:

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

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

    Значение времени ожидания прокси-сервера при чтении – 120

  6. Сохраните изменения.

Edge API

Чтобы настроить виртуальный хост с помощью 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 Update a virtual host (Обновить виртуальный хост), как показано ниже.

    Пользователь общедоступного облака

    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. Выполните API Get virtual host (Получить виртуальный хост), чтобы получить конфигурацию 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. Найдите в каталоге /opt/nginx/conf.d свойство proxy_read_timeout и проверьте, установлено ли для него новое значение:
    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.

Что дальше?

Подробнее о настройке времени ожидания ввода-вывода в Message Processor…