Files
loadtest/History/2026-08-21-annotation-tests.md

2.7 KiB
Raw Permalink Blame History

2026-08-21 — LoadTest: тесты лимита тела на http-12 (k8s-4-sandbox), аннотация не помогла

Дата: 2026-08-21. Инстанс: http-12.containerk8s.dev.nubes.ru (k8s-4-sandbox-nubes-ru). Конфиг: образ naeel/loadtest:v2.0.1, одна аннотация nginx.ingress.kubernetes.io/proxy-body-size: 1024m, CPU 100, mem 200.

Итог

Аннотация proxy-body-size: 1024m на ingress-ресурсе НЕ решает обрыв тел >~64КБ. Лимит стоит на внешнем входном шлюзе платформы (вне кластера, до ingress-nginx).

Замеры /messages (внешний URL, curl, сырое тело)

Размер Результат
60КБ 200 (0.39с)
64КБ 200 (0.46с)
68КБ 000 (10.3с)
84КБ 200 (0.6с)
100КБ ×3 000 (10.2с) все три
512КБ 000 (10.2с)
1МБ 000 (10.2с)
10МБ 000 (10.7с)

Выводы

  • Граница случайная в зоне ~64-84КБ (68КБ рвётся, 84КБ проходит) — как в diag-2026-08-18.
  • Всё ≥100КБ — стабильный обрыв ~10.2с (HTTP 000, TTFB=0).
  • Картина идентична замеру БЕЗ аннотации → аннотация ingress не влияет на внешний шлюз.
  • Кластерные аннотации (proxy-body-size, таймауты, request-buffering) до внешнего шлюза не достают.

Дальше

  • Обход: чанкованная передача (Transfer-Encoding: chunked, чанки по 32КБ).
  • Или тикет на платформу (поднять лимит на входном шлюзе).

Тест chunked (Transfer-Encoding: chunked, чанки по 32КБ) — ТОЖЕ ОБРЫВ

Размер Результат
100КБ RemoteDisconnected, 9.6с
512КБ SSLEOFError, 11.3с
1МБ SSLEOFError, 14.6с
10МБ SSLEOFError, 9.6с

Вывод: chunked НЕ обходит шлюз. Время обрыва ~10-15с не пропорционально размеру → фиксированный таймаут внешнего шлюза на приём тела (аналог ~50с на iot-naeel, но ~10с на общем кластере). Способ передачи (Content-Length/chunked) не влияет. Решение — только на стороне платформы (тикет: поднять таймаут/лимит на входном шлюзе), либо дробление на отдельные запросы <64КБ (меняет протокол).