From 8484197eecb3c12d2cc6673800e3562db929de33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 15 Jul 2026 19:15:17 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20=D1=84=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=B4=D0=B8=D0=B0=D0=B3=D0=BD=D0=BE=D0=B7?= =?UTF-8?q?=20=E2=80=94=20keep-alive=2010=20=D0=B5=D0=B4=D0=B8=D0=BD=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D1=87=D0=B8=D0=BD=D0=B0=20RST?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/2026-07-15-rst-root-cause.md | 37 +++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/History/2026-07-15-rst-root-cause.md b/History/2026-07-15-rst-root-cause.md index 6de30ea..9e80f66 100644 --- a/History/2026-07-15-rst-root-cause.md +++ b/History/2026-07-15-rst-root-cause.md @@ -1,10 +1,45 @@ # DrHider — итоговая диагностика ERR_CONNECTION_RESET -**Дата:** 2026-07-15 +**Дата:** 2026-07-15 (финал) **Версия:** v0.0.29 --- +## Резюме (моё мнение) + +**`keep-alive: 10` — единственная причина ERR_CONNECTION_RESET.** Всё остальное (conntrack, hostPort, ARP flapping, svc_election) — шум, который мы искали 2 дня. + +### Почему это так + +VIP `185.247.187.151` жёстко привязан к control-plane-xb699 через аннотацию `kube-vip.io/vipHost`. Никакого flapping нет — трафик всегда приходит на одну ноду. Второй ingress-под на v8zq4 — избыточен, но не мешает. + +Сценарий: +1. Браузер загружает страницу — opens TCP +2. Пользователь выбирает файлы — проходит >10 сек +3. Nginx (keep-alive=10) закрывает idle соединение +4. Браузер не замечает FIN (буферизация ОС) +5. POST 63KB летит в мёртвый сокет → RST + +### Почему предыдущие гипотезы неверны + +| Гипотеза | Опровержение | +|----------|-------------| +| kube-vip ARP flapping | `vipHost` фиксирует VIP на одной ноде. Lease мёртв — плевать | +| hostPort на 2 из 4 нод | Трафик не на все 4 ноды, а только на control-plane | +| upstream keepalive stale | `keepalive=0` не помог | +| MTU | Решено ещё 14-го, не при чём | +| conntrack | ETPolicy Cluster не при чём — трафик на одну ноду | + +### Что подтверждает keep-alive гипотезу + +| Тест | Объяснение | +|------|-----------| +| Сразу после рестарта ingress → OK | Все соединения свежие | +| Через 5-10 мин → RST | Соединения постарели >10с | +| GET/health → POST → OK | Новое живое соединение | +| curl с ВМ → всегда OK | curl открывает новый SYN каждый раз | +| `keep-alive: 75` + JS warmup → OK на 10+ мин | Увеличили окно, warmup греет | + ## Хронология | Дата | Событие |