4.2 KiB
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→…