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,19 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user