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

20 lines
1.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 |