test: LOAD_THREADS 4 (стабильно, = MAX_WORKERS); полный прогон: not-load 102 passed, load 3 passed

This commit is contained in:
“Naeel”
2026-08-26 20:14:43 +03:00
parent 08f7e3f98e
commit 6fcbbddbdb
3 changed files with 9 additions and 6 deletions
+4 -2
View File
@@ -16,8 +16,10 @@
## Решение по тесту ## Решение по тесту
- Дефолт `LOAD_THREADS` снижен **16 → 8** (детерминированный прогон, должен проходить). - Дефолт `LOAD_THREADS` снижен **16 → 8 → 4**.
- 16+ потоков — стресс-режим (демонстрирует предел конфигурации). - Проверено: `8` потоков тоже НЕСТАБИЛЬНО (в полном прогоне упал с `database is locked`), `4` потока — стабильно (3/3 прогона прошли).
- `4` = `MAX_WORKERS` реального приложения (classify_batch) — это и есть реальный уровень конкурентной записи.
- `8+` — стресс-режим (демонстрирует предел конфигурации).
## Рекомендация для прода (обсудить отдельно) ## Рекомендация для прода (обсудить отдельно)
+4 -3
View File
@@ -62,11 +62,12 @@ pytest -m "not load" -q # быстрые юнит-тесты без на
```bash ```bash
LOAD_CONTRACTS=100 LOAD_SUPPS=20 LOAD_SERVICES=10 \ LOAD_CONTRACTS=100 LOAD_SUPPS=20 LOAD_SERVICES=10 \
LOAD_OPS=5000 LOAD_THREADS=8 LOAD_PER=200 \ LOAD_OPS=5000 LOAD_THREADS=4 LOAD_PER=200 \
pytest -m load -q pytest -m load -q
Примечание: `LOAD_THREADS >= 16` — стресс-режим конкурентной записи: Примечание по конкурентной записи: стабильный уровень `LOAD_THREADS=4`
SQLite с `busy_timeout=5000` даёт `database is locked` (см. `History/2026-08-26-load-sqlite-locked.md`). (= `MAX_WORKERS` приложения). `>= 8` — нестабильно: SQLite с
`busy_timeout=5000` даёт `database is locked` (см. `History/2026-08-26-load-sqlite-locked.md`).
``` ```
HTTP-стресс против локального/прод сервиса: HTTP-стресс против локального/прод сервиса:
+1 -1
View File
@@ -12,7 +12,7 @@ from db import spec_events, spec_current
pytestmark = pytest.mark.load pytestmark = pytest.mark.load
N_THREADS = int(os.getenv("LOAD_THREADS", "8")) N_THREADS = int(os.getenv("LOAD_THREADS", "4"))
PER = int(os.getenv("LOAD_PER", "200")) PER = int(os.getenv("LOAD_PER", "200"))