Files
contracts/DOC/how-to-test-upload-devops.md

4.2 KiB

Как проверить загрузку файлов в Contracts (для DevOps Nubes)

Цель: воспроизвести «чистую» загрузку файла с клиента на сервер, без обработки, чтобы поймать обрыв на ингрессе/периметре (граница ~64 КБ, плавает по маршруту).

1. Какой инстанс / где смотреть

  • Деплой и домен: смотри contracts-flask/deploy/ и VM.md (в этой репе).
  • Внешний путь: NSX Edge + AVI ALB → Kubernetes Ingress (nginx) → поды Flask.
  • Сервер отдаёт именно загрузку файлов: интерфейс = выбор файла в локали → клиент режет на чанки 50 КБ → POST /chunk → сервер копит и собирает файл.

2. Что важно знать (контекст из истории)

  • Проблема ингресса уже встречалась: прямой POST файла резался client_max_body_size (весной, PDF 153 КБ → «✗ Сеть»).
  • Сейчас обход — чанковая загрузка по 50 КБ (file.slice(0,50KB)/chunk). Значит, «большой файл» для проверки = много чанков, а не один POST.
  • Для диагностики полезно проверить ОБА способа: а) обычная загрузка через UI (чанки); б) прямой большой POST = то, что ближе к «чистому» обрыву на шлюзе.

3. Как проверять (по шагам)

Шаг 1. Поднять/найти инстанс

  • Определи, где сейчас развёрнут сервис (см. deploy/, VM.md).
  • Убедись, что сервис отвечает (лендинг/UI).

Шаг 2. Чистая загрузка через UI (чанки)

  • В веб-интерфейсе выбери файл в локали (начни с 1–5 МБ).
  • Наблюдай прогресс: чанки должны идти последовательно.
  • Критерий сбоя: прогресс встаёт, «✗ Сеть», или не хватает чанков при сборе.

Шаг 3. Прямой большой POST (обнажает границу шлюза)

  • Одним запросом отправь файл ~1–5 МБ на endpoint загрузки.
  • Ожидание: если проблема есть — запрос обрывается на ~середине, частичная передача, таймаут.
  • Сравни с малым файлом (~10 КБ): должен пройти мгновенно.

Шаг 4. Серия размеров (найти границу)

  • Прогони один и тот же файл в размерах: ~10 КБ, ~50 КБ, ~64 КБ, ~100 КБ, ~1 МБ, ~5 МБ.
  • Зафиксируй порог, с которого начинаются сбои (у нас он плавает ~64 КБ).

Шаг 5. Снять симптомы «глазами пользователя»

  • Что видит пользователь: прогресс%, код ошибки браузера, «Сеть»/таймаут.
  • Если есть доступ к подам: логи nginx-ингресса и пода на момент обрыва (хватит ли байт пришло).

4. Что сообщить DevOps по результатам

  • Размер, на котором воспроизводится обрыв (порог).
  • Это чанки или прямой POST.
  • Точное время и домен инстанса (у нас баг нестабилен — плавает по маршруту, поэтому важно поймать момент и передать «на горячем»).

5. Полезные ссылки из репо

  • History/sessions/session-07-chunks.md — вся история чанковой загрузки и обхода client_max_body_size.
  • History/architecture-research-v2-2026-06-27.md — поток Upload→Parse→…