Files
loadtest/History/plan-2026-08-18-ingress-fix.md

3.0 KiB

План (НЕ ВЫПОЛНЕН, отложен): правка ingless-аннотаций на iot-naeel для устранения задержки ~51с

Дата: 2026-08-18. Статус: только документ, НИЧЕГО не правилось.

Контекст

  • Инстанс loadtest сейчас НЕ на iot-naeel (передеплоен на общий кластер k8s-4-sandbox-nubes-ru).
  • Правку аннотаций на iot-naeel по команде пользователя ПОКА НЕ делать.

Факты, выясненные на iot-naeel (до передеплоя)

  1. Ingress loadtest в ns bb9ed30b-... уже содержит аннотации:
    • nginx.ingress.kubernetes.io/proxy-body-size: 1024m
    • proxy-connect-timeout: 120, proxy-read-timeout: 600, proxy-send-timeout: 600
  2. Ingress-class = nginx, controller = shturval-ingress-controller (брендированный ingress-nginx), namespace ingress (НЕ ingress-nginx).
  3. Глобальный configmap ingress/shturval-ingress-controller-controller:
    • client-body-buffer-size: 2m
    • client-body-timeout: "60" ← вероятная причина ~51.5 с
    • client-header-timeout: "30"
    • proxy-body-size: 1024m
  4. Права: kubectl auth can-i patch/update ingress = yes (можем править свой ingress). Глобальный configmap в ns ingress — НЕ наш, его не трогаем.

Почему ~51.5 с (гипотеза)

  • client-body-timeout: 60 глобально → при буферизации тела больше ~2МБ (или при притормаживании потока) nginx ждёт чтения до таймаута ~60 с; наблюдаем ~51.5 с.
  • Аннотации read/send-timeout 600 не виноваты (они выше).

План (если решат выполнить — на iot-naeel)

  1. На ingress loadtest добавить аннотацию nginx.ingress.kubernetes.io/proxy-request-buffering: "false" — отключить буферизацию тела на этом ингрессе (обратимо).
  2. Прогнать тест: 100 КБ / 1 МБ → проверить, ушла ли задержка ~51 с.
  3. Если не помогла — вернуть, рассмотреть client_body_timeout (глобально нельзя, наш ns не тот) или вариант с чанкованной отправкой на клиенте.
  4. ВАЖНО: это правка боевого ingress → только после явной команды "делай".

Замечание

  • На общем кластере (k8s-4-sandbox) доступа к ingress/ns нет (нужен параметр аннотации в ЛК, задачу разработчик платформы уже завёл).
  • Это два разных мира: iot-naeel — правим сами; общий кластер — только через платформу.