1.1 KiB
1.1 KiB
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