Налаштування таймаутів для Redash, Kong та Common Web App

1. Опис проблеми

Користувачі redash-viewer стикалися з проблемами при завантаженні великих звітів із dashboards, що містять понад 700 стовпців та 1700 записів. Через таймаут за замовчуванням у 30 секунд, процес завершувався помилкою. Для розв’язання цієї проблеми було додано можливість налаштування таймаутів, що забезпечує стабільне завантаження великих обсягів даних.

2. Інструкція з налаштування таймауту

У рамках hotfix були внесені зміни до компонентів redash, common-web-app та kong. Виконайте наведені нижче кроки для налаштування параметрів таймауту, відповідно до ваших вимог.

Кроки для налаштування призначені для двох типів кластерів: AWS та vSphere. AWS також вимагає додаткової конфігурації — це описано в розділі Додаткові налаштування для AWS-кластерів.

2.1. Редагування параметрів таймаутів

Параметри таймаутів можна встановити у файлі deploy-templates/values.yaml. Внесіть зміни залежно від компонента.

2.1.1. Таймаут для redash

Компонент redash відповідає за роботу вебінтерфейсу для перегляду звітів. Таймаут webTimeout визначає максимальний час очікування відповіді сервера при завантаженні великих звітів.

redash:
  webTimeout: 300
  • webTimeout — час очікування у секундах. Рекомендоване значення: 300 секунд (5 хвилин).

2.1.2. Таймаут для common-web-app

Компонент common-web-app керує маршрутизацією запитів у кластері. Параметр timeout визначає максимальний час очікування для маршрутизатора.

webApp:
  router:
    timeout: 300s
  • timeout — час очікування у секундах (формат: Xs). Рекомендоване значення: 300 секунд (5 хвилин).

2.1.3. Таймаут для kong

Компонент kong відповідає за управління API-запитами. Таймаути можна налаштувати через параметри connect_timeout, read_timeout та write_timeout.

kongIngress:
  connect_timeout: 300000
  read_timeout: 300000
  write_timeout: 300000
  • connect_timeout — максимальний час встановлення з’єднання у мілісекундах.

  • read_timeout — максимальний час очікування відповіді від сервера у мілісекундах.

  • write_timeout — максимальний час на передачу даних серверу у мілісекундах. Рекомендовані значення: 300000 мс (5 хвилин).

2.2. Застосування змін

  1. Виконайте коміт змін у файлі deploy-templates/values.yaml до Gerrit-репозиторію.

  2. Дочекайтеся завершення пайплайну MASTER-Build, щоб застосувати нову конфігурацію реєстру.

3. Додаткові налаштування для AWS-кластерів

Для кластерів на базі AWS необхідно виконати додаткові налаштування у OpenShift-консолі для коректної роботи з таймаутами.

  1. Відкрийте консоль OpenShift та перейдіть до проєкту openshift-ingress-operator. Знайдіть ресурс IngressController.

    set timeout redash kong webapp 01

  2. Відкрийте ресурс default та додайте наступний блок у YAML-конфігурацію:

    spec:
      endpointPublishingStrategy:
        loadBalancer:
          providerParameters:
            aws:
              classicLoadBalancer:
                connectionIdleTimeout: 5m
              type: Classic
            type: AWS
          scope: External
        type: LoadBalancerService

    set timeout redash kong webapp 02

4. Результат

  • Таймаути для компонентів redash-chart, common-web-app та kong налаштовано згідно з рекомендованими значеннями.

  • Завдяки редагуванню параметрів у values.yaml конфігурація реєстру стала більш гнучкою та простою у використанні.

  • Додаткові налаштування для AWS-кластерів забезпечують стабільну роботу в специфічних умовах хмарної інфраструктури.