Files
loadtest/History/sonnet-question-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

39 lines
1.7 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.
# Sonnet: противоречие — nginx 10/10, Flask raw то 10/10 то 2/10
## Данные без интерпретаций
### Тест 1: nginx:alpine через тот же VIP/ingress/порт
100KB raw binary POST, 10 запросов, таймаут 2с: **стабильно 10/10**
### Тест 2: Flask (тот же ingress/VIP) — raw binary
100KB raw binary POST, те же параметры:
- Первый прогон: 10/10
- Второй прогон (после редеплоя): 2/10
- Третий прогон: 2/10
### Тест 3: Flask — URL-encoded form (base64)
100KB base64 → 136KB POST: стабильно 2-5/10
### Тест 4: Flask изнутри кластера
pod → VIP: 10/10 всегда
pod → ingress service: 10/10 всегда
### Что пробовали
- debug=False: 5/10
- Gunicorn: 1/10 (хуже)
- proxy_request_buffering on/off: 3-5/10
- kube-vip nodeSelector/taint: не влияет
- MSS clamping: не влияет
- raw binary вместо form: то 10/10, то 2/10
## Инфра
- Shturval 2.12.1, Cilium CNI
- Flask 3.1.3, Werkzeug 3.1.8
- nginx ingress, http2 on, proxy_request_buffering off
- kube-vip ARP mode, 4 ноды, ingress hostPort на 2
## Вопрос
Почему nginx:alpine через тот же ingress стабильно 10/10, а Flask raw binary — то 10/10, то 2/10?
Что именно в цепочке ingress→Flask даёт такую нестабильность, если тело одно и то же (raw 100KB)?
Может ли Werkzeug dev server иметь скрытый баг с keepalive/connection reuse, который проявляется случайно?