From 6542d51375d864635185483bc94c5b1233951225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 24 Aug 2026 09:28:02 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=84=D1=83=D1=81=D0=BA=D0=B0=D1=86=D0=B8=D0=B8=2024.08?= =?UTF-8?q?=20+=20=D0=BD=D0=B0=D0=B9=D0=B4=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9?= =?UTF-8?q?=20=D0=B1=D0=B0=D0=B3=20TTL<=D0=B4=D0=BE=D0=BB=D0=B3=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=BE=D0=B1=D1=84=D1=83=D1=81=D0=BA=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20(download=20404)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...2026-08-24-tests-upload-and-obfuscation.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 History/2026-08-24-tests-upload-and-obfuscation.md diff --git a/History/2026-08-24-tests-upload-and-obfuscation.md b/History/2026-08-24-tests-upload-and-obfuscation.md new file mode 100644 index 0000000..95d7006 --- /dev/null +++ b/History/2026-08-24-tests-upload-and-obfuscation.md @@ -0,0 +1,52 @@ +# drhider — тесты загрузки и обфускации (2026-08-24, v0.0.62) + +_Кластер `naeel-test-3`, v0.0.62 (лимиты 50МБ/файл, 500МБ/сессия), под 1 CPU / 2 GiB +(requests=limits, подтверждено kubectl). ВМ-буфер: `https://contracts.kube5s.ru/drhider-upload/`._ + +## Тест 1 — загрузка (upload-only), много + больших файлов + +Корпус: 118 бинарных файлов, 480 МБ (8×45МБ + 10×10МБ + 100×200КБ). Файлы >40МБ — 8 шт. + +| Этап | Результат | +|---|---| +| PUT на ВМ (P=8, `--resolve` обход DNS) | **119/119 HTTP 201**, 43.4с | +| `POST /api/upload_refs` | HTTP 200, 50.8с, `{count:119, session}` | +| `GET /api/session_files` | 119 файлов, **480.5 МБ**, 8 больших (>40МБ) | + +**Вывод:** загрузка через ВМ стабильна на объёме 480МБ/119 файлов под лимитом 500МБ, 0 ошибок. + +## Тест 2 — обфускация, много мелких файлов + +Корпус: 100 сгенерированных `.txt`-договоров с фейковыми PII (ФИО, телефоны, ИНН, ОГРН, БИК, +р/с, к/с, паспорта, адреса, email). Сессия `bba1a7272aed`. + +| Показатель | Значение | +|---|---| +| start / done | **101 / 101** (0 ошибок) | +| complete | `{total: 101, tokens: 1 569 716, llm_sec: 1924.6}` | +| SSE-время | 1995.6с (~33.3 мин) | +| ZIP | **404 — НЕ скачался** | +| CSV | **404 — НЕ скачался** | + +Обфускация отработала полностью (101 done, complete пришёл, `zip_len=147861` в логе worker), +но **результат потерян при скачивании** — см. баг ниже. + +## ⚠️ Найденный баг: TTL сессии (30 мин) короче долгой обфускации + +- `site/session.py`: `TTL_SECONDS = 30*60`, таймер запускается при создании сессии и + **не продлевается** во время обработки (`threading.Timer`, `_clean` просто `pop(sid)`). +- Обфускация заняла 1995с (> 1800с TTL) → таймер удалил сессию посреди обработки. +- `store_result(sid, zip)` при отсутствующей сессии молча возвращает `False` → результат не сохранён. +- `GET /api/download/` и `/api/csv/` → `get_result`=None → **404**. +- Подтверждено: `session_files/bba1a7272aed` → 404; лог: `worker: done ... in 1995.0s ... zip_len=147861`. + +**Почему раньше не всплыло:** в тесте 23.08 каждая сессия завершалась за 19/16 мин < TTL. + +**Предлагаемый фикс:** продлевать TTL при активности обработки (cancel+restart таймера на +каждое событие прогресса, либо отдельный длинный TTL для «в обработке», либо сохранять +результат даже при истёкшей сессии). **Не делалось — ждёт «делай».** + +## Прочее +- Первый прогон теста 1 упал из-за бага тест-скрипта (отправил список вместо `{files:[...]}` в + `upload_refs`) — сервис тут ни при чём. +- DNS на Krupski медленный (~5с/резолв) — в тестах обходился `curl --resolve`.