Files
loadtest/History/2026-07-10-sonnet-answer-contradiction.md
naeel 4a09038f96
Deploy loadtest / validate (push) Waiting to run
feat: Gunicorn + gevent (keepalive), bump 1.0.8→1.0.9
2026-07-10 23:42:54 +04:00

1.3 KiB
Raw Permalink Blame History

2026-07-10 — Ответ Соннета: stale upstream keepalive

Диагноз

nginx держит пул keepalive-соединений к Flask. После редеплоя — старые соединения ведут на мёртвый pod IP (Cilium conntrack). Часть запросов попадает на живые, часть на stale → случайность.

Почему nginx:alpine всегда 10/10

Он тоже в поде, но nginx→nginx keepalive работает корректно. nginx→Werkzeug — нет (Werkzeug шлёт Connection: close, nginx может игнорировать).

Почему Gunicorn 1/10

Был запущен с 1 sync worker. H2 multiplexing от nginx создаёт много конкурентных запросов → один worker не справляется → 9/10 в очереди → таймаут.

План проверок

# Действие Что проверяет
1 ingress annotation: upstream-keepalive-connections: "0" Stale keepalive — если 10/10, причина найдена
2 Gunicorn -w 4 -k gevent --keep-alive 0 Concurrency fix
3 Ingress: use-http2: "false" H2 multiplexing
4 kubectl rollout restart + сразу тест Cilium conntrack