fix: debug=False, force read body, bump 1.0.6→1.0.7
Deploy loadtest / validate (push) Waiting to run
Deploy loadtest / validate (push) Waiting to run
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# Вопрос Opus: как добиться 100% загрузки через edge LB без ретраев
|
||||
|
||||
## СУТЬ
|
||||
Edge LB (NUBES LLC, 185.247.187.151) дропает ~50-70% новых TCP-соединений при POST > ~48KB.
|
||||
НО: внутри k8s кластера — 100%. После установки соединения (keep-alive) — 8/10.
|
||||
|
||||
## ДОКАЗАННЫЕ ФАКТЫ
|
||||
- Flask под напрямую: 100% (102400 байт, 4ms)
|
||||
- Ingress HTTPS изнутри кластера: 100%
|
||||
- Снаружи (новый TCP на каждый запрос): ~30-50%
|
||||
- Снаружи (HTTP/1.1 keep-alive, одно соединение): 80% (первые 2 таймаута, потом OK)
|
||||
- Маленькие POST (< 48KB): 100%
|
||||
|
||||
## ЧТО УЖЕ СДЕЛАНО (без эффекта)
|
||||
- proxy-request-buffering: off (ingress annotation) — частично помогло
|
||||
- keep-alive увеличен (10→75) — ухудшило (агрессивнее дроп)
|
||||
- HTTP/2 уже включён (http2 on)
|
||||
- ModSecurity DetectionOnly (не блокирует)
|
||||
- Ретраи на клиенте — КОСТЫЛЬ, не решение
|
||||
|
||||
## ГЛАВНЫЙ ВОПРОС
|
||||
Как настроить k8s nginx ingress (Shturval) так, чтобы edge LB НЕ дропал соединения?
|
||||
Что именно в нативном nginx (contracts) позволяет ему работать, а k8s ingress — нет?
|
||||
|
||||
## Конфиг работающего contracts (nginx на ВМ, тот же IP)
|
||||
```nginx
|
||||
location /upload {
|
||||
proxy_pass http://127.0.0.1:8766;
|
||||
client_max_body_size 100m;
|
||||
proxy_request_buffering off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Content-Type $content_type;
|
||||
proxy_set_header Content-Length $content_length;
|
||||
}
|
||||
```
|
||||
|
||||
## Текущий ingress loadtest (k8s)
|
||||
```yaml
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "1024m"
|
||||
nginx.ingress.kubernetes.io/proxy-connect-timeout: "120"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
|
||||
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
|
||||
```
|
||||
|
||||
## ОГРАНИЧЕНИЯ
|
||||
- Только k8s (ingress, поды, деплойменты)
|
||||
- Edge LB не наш
|
||||
- Никаких ретраев/костылей — нужно 100% без них
|
||||
Reference in New Issue
Block a user