Files
contracts/History/sonnet-question-upload-rst-2026-07-15.md
T

3.4 KiB
Raw Blame History

Вопрос для Sonnet — проблема первого upload (без ссылок на файлы)

Ситуация

Мигрировали сервис "Сверка договоров" с ВМ на Flask (managed Python, Штурвал). Всё работает: классификация LLM, парсинг, группы, сравнение через SSE. НО: первый файл при upload из браузера падает с ERR_CONNECTION_RESET.

Та же проблема прямо сейчас на втором сервисе — drhider (Обфускация документов). Вчера (14 июля) drhider работал, сегодня (15 июля) — оба сервиса сломаны одинаково.

Симптомы

  • Браузер: первый POST с файлом (~63KB) зависает на 100% прогресса, ответ не приходит
  • curl с ВМ (5.172.178.213): 5/5 upload успешно, ~80-100ms каждый
  • Затрагивает оба сервиса: contractor и drhider
  • Признак: ERR_CONNECTION_RESET в Chrome/Electron

Что проверено (инфраструктура)

Cilium MTU: 1400 Ingress (shturval-ingress-controller, nginx): keep-alive: 75 use-http2: false proxy-body-size: 1024m client-body-timeout: 60 client-header-timeout: 30 Ingress-поды: 2/2 Ready, 1/1 Running Образ ingress: r.shturval.tech/ingress-nginx/controller:v1.12.6

Размещение подов сейчас: Ingress: control-plane (172.16.0.73) + workers-v8zq4 (172.16.3.149) Contractor: workers-6f74n (172.16.1.182) Drhider: workers-6f74n (172.16.1.99)

Кластер: 4 ноды (3 worker + 1 control-plane), Cilium с Geneve-энкапсуляцией, kube-vip.

Что проверено (код)

  • В JS добавлен warmup fetch('/health') при загрузке страницы
  • Flask no_cache after_request (Cache-Control: no-cache)
  • app.run(threaded=True)

Хронология

  • 13 июля: Helm ingress revision 7 — drhider работал
  • 15 июля 02:00 UTC: Helm upgrade → revision 8 — сбросил ingress ConfigMap на дефолты (keep-alive: 10, body-size: 8m, client-body-timeout: 10, client-header-timeout: 10)
  • 15 июля ~08:00 UTC: патч ConfigMap обратно (keep-alive: 75, etc.) + kubectl rollout restart ingress
  • После патча: curl работает, браузер — нет
  • Helm values ИДЕНТИЧНЫ между revision 7 (рабочей) и 8 (сломанной):
    controller:
      hostPort.enabled: true
      replicaCount: 2
      service.type: LoadBalancer
    

Что ещё

  • drhider проходил эту проблему 14 июля — есть документ PROBLEM-AND-SOLUTION.md Фиксы оттуда ВСЕ применены: MTU 1400, keep-alive 75, use-http2 false, warmup, proxy-body-size 1024m
  • Там же сказано: даже после всех фиксов "5× POST 63KB | 4× OK, 1× ABORTED" — 20% отказов

Вопрос

  1. Почему после Helm upgrade (revision 7→8) браузерные upload перестали работать, если все значения ConfigMap восстановлены вручную до прежних?
  2. Что ещё мог изменить Helm upgrade кроме ConfigMap?
  3. Как добиться 100% надёжности первого upload из браузера?