docs: WORKFLOW §7 — IFT capacity baseline and loadtest rules
Refs EventHubSpec#3 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+34
@@ -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. Расширение правил
|
## 4. Расширение правил
|
||||||
|
|
||||||
При появлении новой договорённости в работе:
|
При появлении новой договорённости в работе:
|
||||||
@@ -253,6 +285,7 @@ IFT и stage крутят **одну и ту же** сборку `sha-*`. Produc
|
|||||||
- Новая задача — **отдельный чат** с брифом по §5.
|
- Новая задача — **отдельный чат** с брифом по §5.
|
||||||
- **Версии/деплой:** product = `VERSION` (`MAJOR.MINOR`); IFT+stage = `sha-*` (+ floating `:ift`/`:stage`); без ручных stage-тегов и без patch++ на каждый push (см. §6).
|
- **Версии/деплой:** 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`).
|
- **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-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 + gate: Playwright E2E (mock CI + IFT smoke secrets) |
|
||||||
| 2026-07-14 | §6: VERSION MAJOR.MINOR + auto stage по sha после CI |
|
| 2026-07-14 | §6: VERSION MAJOR.MINOR + auto stage по sha после CI |
|
||||||
|
|||||||
Reference in New Issue
Block a user