From 2f5a94bf3ff201aefc58cd17f4d5fa4094917edf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 19 Aug 2026 14:33:26 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=B4=D0=B8=D0=B0=D0=B3=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BA=D0=B0=20=D0=BD=D0=B5=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=B1=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D0=B7=D0=B0=D0=B3?= =?UTF-8?q?=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20+=20=D0=B0=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D0=B8=20ingress=20+=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B9=D0=BC=D0=B0=D1=83=D1=82=20300=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/2026-08-19-upload-delay.md | 59 ++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 History/2026-08-19-upload-delay.md diff --git a/History/2026-08-19-upload-delay.md b/History/2026-08-19-upload-delay.md new file mode 100644 index 0000000..7a3afee --- /dev/null +++ b/History/2026-08-19-upload-delay.md @@ -0,0 +1,59 @@ +# Диагностика медленной/нестабильной загрузки + v0.0.43 — 2026-08-19 + +**Дата:** 2026-08-19 +**Версия:** 0.0.42 → 0.0.43 + +--- + +## Проблема +Юзер: «Таймаут 30с» при загрузке 19 МБ PDF в drhider. Раньше (11с) грузилось. + +## Диагностика (факты) + +### Таймаут 30с +- Введён 14.07.2026 (коммит `b6dac6f`, «не висеть бесконечно»), НЕ мой код. +- 19 МБ / 30с = 0.63 МБ/с — при медленном/нестабильном канале не хватает. + +### Замеры загрузки с ВМ (внешний путь) +- 1 МБ → 0.16с (быстро) +- 5 МБ → 51.6с (медленно) +- 10 МБ → 52.4с (медленно) +- Повтор 10 МБ ×4: **1.07с / 52.3с / 52.3с / 52.3с** — НЕСТАБИЛЬНО, чаще 52с. +- Повтор 1 МБ: то 51с, то 0.5с — задержка НЕ зависит от размера. + +### Тайминг (10 МБ) +- `connect=0.046с`, `starttransfer=0.09с`, `total=52.5с`. +- Сервер отвечает быстро (starttransfer), но соединение «висит» ~52с после ответа. +- `Connection: close` — НЕ помогает (то же 52с). + +### Сервер +- Из loadtest: внутри кластера 10 МБ = 0.2с — сервер/Flask быстрые. +- ClusterIP с ВМ недоступен (ВМ вне кластера) — проверить напрямую не вышло. + +## Применённые аннотации ingress (НЕ помогли) +Добавлены на ingress `pythonk8s` (ns 20a75175...): +```yaml +nginx.ingress.kubernetes.io/proxy-request-buffering: "false" +nginx.ingress.kubernetes.io/client-body-buffer-size: "1024m" +``` +- `kubectl patch` — применено, nginx reload (75с). +- В конфиге: `client_body_buffer_size 1024m` — применилось. +- `proxy_request_buffering on` — НЕ применилось (аннотация не подхватилась shturval-контроллером). +- Замер после: 5 МБ = 51.7с, 19 МБ = 53.8с — эффекта НЕТ. + +## Вывод +- Задержка ~50с НЕ в коде drhider, НЕ в буферизации nginx, НЕ зависит от размера, + НЕСТАБИЛЬНА (то 0.5с, то 52с). Вероятно: внешний путь шлюз/балансировщик/сеть + (потеря пакетов / TCP RTO ~50с, или периодическая задержка шлюза). +- Совпадает с диагнозом loadtest: «на iot-naeel шлюз держит ~50с». + +## Решение (v0.0.43) — защита от ошибки юзера +- `xhr.timeout`: 30000 → **300000 (300с)** — при нестабильной загрузке файл + догрузится (медленно, но без «Таймаут 30с»). +- Сообщение: «Таймаут 30с» → «Таймаут 300с». + +## Осталось +- Аннотации на ingress оставлены (`client-body-buffer-size 1024m` не вредит; + `proxy-request-buffering` не работает на shturval — искать правильный способ). +- Корень задержки ~50с на внешнем пути — НЕ найден, требует сетевой диагностики + (tcpdump, проверка балансировщика/шлюза платформы).