feat: Gunicorn + gevent (keepalive), bump 1.0.8→1.0.9
Deploy loadtest / validate (push) Waiting to run

This commit is contained in:
2026-07-10 23:42:54 +04:00
parent 99e7113459
commit 4a09038f96
6 changed files with 130 additions and 2 deletions
+23
View File
@@ -0,0 +1,23 @@
# 2026-07-10 — Финальный ответ: Werkzeug Connection: close
## Корень
Werkzeug dev-сервер ВСЕГДА закрывает TCP-соединение после ответа (`Connection: close`).
nginx должен создавать НОВЫЙ TCP на каждый запрос → Cilium conntrack cycling → intermittent failure.
nginx:alpine держит `Connection: keep-alive` → 1 TCP на все запросы → 10/10.
## Почему все тесты такие
| Тест | Результат | Причина |
|------|-----------|---------|
| nginx:alpine | 10/10 | keep-alive, 1 TCP |
| Flask | 2-5/10 | close, N TCP |
| Gunicorn sync | 1/10 | тоже close + ошибка конфига |
| upstream-keepalive=0 | 0/10 | даже keepalive запрещён |
| внутри кластера | 10/10 | другой code path Cilium |
| свежий деплой 10/10 | чистый conntrack |
## Решение
Gunicorn с gevent worker (поддерживает keepalive):
```
gunicorn -w 2 -k gevent --keep-alive 75 --timeout 120 --bind 0.0.0.0:5000 app:app
```