diff --git a/WORKFLOW.md b/WORKFLOW.md index 956cfe8..1836193 100644 --- a/WORKFLOW.md +++ b/WORKFLOW.md @@ -228,6 +228,38 @@ IFT и stage крутят **одну и ту же** сборку `sha-*`. Produc --- +## 7. Нагрузочное тестирование IFT (Tsung) + +Стенд IFT (HOME-PC): Docker Swarm **внутри WSL2**. Часть BOUNDARY_HIT под aggressive stress — артефакт гипервизора/`vmmem`, не только приложения. + +### Baseline (июль 2026, текущее железо) + +| Метрика | Значение | +|---------|----------| +| Рабочий потолок hot-path | ~**10 VU/s** (interarrival ≥ 0.1 s, thinktime ≥ 1 s) | +| Green hold | фазы 0.2 / 0.1 s | +| OVER (connect) | ~20 VU/s (interarrival 0.05) на ×1/×2 | +| ×3 | connect держится; упор в rate limit / Mnesia / archive (см. Back#32–#34) | + +Подробности: `EventHubBack/test/tsung/README.md`, закрытая задача `EventHubBack#30`. + +### Правила (обязательно) + +- **Default stress-профиль:** `eventhub_ift_stress_hold.xml` / `stress-hold`. +- `maxusers` ≤ **300**; `thinktime` ≥ **1** s; плановый interarrival ≥ **0.1** s. +- Uncapped / `stress-bump` / `maxusers≫300` на IFT **запрещены** без явного согласования (`CONFIRM_DANGEROUS=1` в оркестраторе). +- Prepare/restore: `EventHubDevOps/scripts/ift-loadtest-*.sh`; при hang WSL SSH — Windows `restore-ift.ps1` / `wsl --shutdown`. +- Exchange-share: `collect-ift-loadtest-logs*.ps1`, `restart-wsl-and-collect-logs.ps1`. + +### Критерий верхней границы (2A) + +error rate > 1% **или** mean request > 500 ms (hold ≥2 мин в фазе) → `BOUNDARY_HIT`. +Разбор: `python3 test/tsung/summarize-tsung-stress.py`. + +Сравнение hold на bare Linux (без WSL2) — отложено: `EventHubDevOps#4` (Future). + +--- + ## 4. Расширение правил При появлении новой договорённости в работе: @@ -253,6 +285,7 @@ IFT и stage крутят **одну и ту же** сборку `sha-*`. Produc - Новая задача — **отдельный чат** с брифом по §5. - **Версии/деплой:** product = `VERSION` (`MAJOR.MINOR`); IFT+stage = `sha-*` (+ floating `:ift`/`:stage`); без ручных stage-тегов и без patch++ на каждый push (см. §6). - **FrontAdmin E2E:** mock-suite обязателен в CI; IFT smoke — после Deploy IFT (`e2e-ift.yml`, учётки из стендового `.env`). +- **IFT loadtest:** hold-профиль default; потолок ~10 VU/s; uncapped stress запрещён; recover через Windows SSH / `wsl --shutdown` (см. §7). --- @@ -260,6 +293,7 @@ IFT и stage крутят **одну и ту же** сборку `sha-*`. Produc | Дата | Изменение | |------|-----------| +| 2026-07-15 | §7: capacity baseline IFT + правила Tsung stress (после EventHubBack#30) | | 2026-07-15 | §2.1: пропуск CI — `[skip ci]` / `SKIP_CI=1` в git-commit.sh | | 2026-07-14 | §6 + gate: Playwright E2E (mock CI + IFT smoke secrets) | | 2026-07-14 | §6: VERSION MAJOR.MINOR + auto stage по sha после CI |