feat: Gunicorn + gevent (keepalive), bump 1.0.8→1.0.9
Deploy loadtest / validate (push) Waiting to run
Deploy loadtest / validate (push) Waiting to run
This commit is contained in:
@@ -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
|
||||
```
|
||||
Reference in New Issue
Block a user