release: версия 0.0.31
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled

This commit is contained in:
2026-08-09 01:07:41 +03:00
parent 296ce60c78
commit c906c97cb8
4 changed files with 46 additions and 3 deletions

View File

@@ -3,6 +3,43 @@
Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/),
проект придерживается [семантического версионирования](https://semver.org/lang/ru/).
## [0.0.31] — 2026-08-09
Разбор провала входа на нагрузочном тесте 07.08.2026: комната держала
соединения с БД и Redis на каждого участника.
### Исправлено
- **Вход в систему переставал работать, когда в конференции набиралось
около сорока человек.** WS-подключение комнаты (чат и очередь рук)
держало занятым одно соединение с БД всё время, пока участник сидел
в конференции: SELECT'ы хендшейка открывали транзакцию, а закрыть её
было некому. Пул — 20 соединений на воркер (40 на инстанс), поэтому
сороковой вошедший выгребал его досуха, и все остальные запросы —
резолв конференции, гостевой вход, логин, обновление токена — начинали
отвечать 500. Теперь соединение возвращается в пул сразу после
хендшейка; на локальном стенде 120 участников на одном воркере не
занимают ни одного соединения в простое (было: 20 из 20 при 20
участниках, дальше вход не работал вовсе).
- **Пользователя выкидывало из системы, когда серверу было плохо.**
Фоновое обновление access-токена считало неудачей любой отрицательный
ответ и на каждую такую неудачу сбрасывало сессию с переходом на
страницу входа. Ответ 5xx (и обрыв сети) теперь означает «сервер
временно недоступен»: сессия сохраняется, пользователь остаётся
в системе и получает обычную ошибку запроса. Разлогинивание осталось
только там, где backend прямо сказал, что сессия недействительна.
Восстановление сессии при старте приложения повторяет попытку трижды,
прежде чем показать страницу входа.
### Технические детали
- Размер пула соединений с Redis задан явно (`REDIS_MAX_CONNECTIONS`,
по умолчанию 500): на нём висят долгоживущие pub/sub-подписки комнаты —
по одной на участника, — а дефолт redis-py 8 (100) упирался в потолок
примерно на сотом участнике на воркер. Второй потолок того же рода,
что и пул БД; найден при проверке правки выше на 120 участниках.
- Размеры пулов БД (`DB_POOL_SIZE`/`DB_MAX_OVERFLOW`) не менялись
осознанно: соединение больше не удерживается впустую, поэтому
расширение пула лечило бы симптом и лишь отодвинуло порог.
## [0.0.30] — 2026-08-04
Согласие на обработку персональных данных при регистрации + отключаемый модуль.