Налаштування таймаутів для 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. Застосування змін
-
Виконайте коміт змін у файлі
deploy-templates/values.yaml
до Gerrit-репозиторію. -
Дочекайтеся завершення пайплайну MASTER-Build, щоб застосувати нову конфігурацію реєстру.
3. Додаткові налаштування для AWS-кластерів
Для кластерів на базі AWS необхідно виконати додаткові налаштування у OpenShift-консолі для коректної роботи з таймаутами.
-
Відкрийте консоль OpenShift та перейдіть до проєкту
openshift-ingress-operator
. Знайдіть ресурсIngressController
. -
Відкрийте ресурс
default
та додайте наступний блок у YAML-конфігурацію:spec: endpointPublishingStrategy: loadBalancer: providerParameters: aws: classicLoadBalancer: connectionIdleTimeout: 5m type: Classic type: AWS scope: External type: LoadBalancerService
4. Результат
-
Таймаути для компонентів
redash-chart
,common-web-app
таkong
налаштовано згідно з рекомендованими значеннями. -
Завдяки редагуванню параметрів у
values.yaml
конфігурація реєстру стала більш гнучкою та простою у використанні. -
Додаткові налаштування для AWS-кластерів забезпечують стабільну роботу в специфічних умовах хмарної інфраструктури.