Top.Mail.Ru
Ответы

Ошибка на фасике

выдает эту фигню короче ватафак

1
upstream connect error or disconnect/reset before headers. reset reason: overflow

По дате
По рейтингу
Аватар пользователя
1мес

Похоже, ты наткнулся на классическую ошибку Envoy-прокси (скорее всего, у тебя Istio, или просто Envoy стоит перед сервисом). Текст ошибки:

text

1
upstream connect error or disconnect/reset before headers. reset reason: overflow

Переводится примерно так: «Ошибка подключения к upstream или обрыв соединения до отправки заголовков. Причина сброса: переполнение».
overflow здесь означает, что размер ответных HTTP-заголовков (response headers), которые отдаёт твой бэкенд (сервис), превысил лимит, установленный в Envoy. По умолчанию Envoy разрешает не более 60 КиБ на все заголовки ответа. Если сервис кладёт в заголовки что-то очень большое (например, огромные cookies, длинные кастомные заголовки, редиректы с большими URL в Location), наступает overflow — и Envoy рвёт соединение.

Как исправить

1. Уменьшить заголовки в самом приложении

  • Проверь, нет ли в ответе огромных Set-Cookie или лишних кастомных заголовков.

  • Особенно часто проблема возникает, если в cookie пихают много данных (токены, сериализованные объекты).

  • Если у тебя прокси/балансировщик добавляет свои заголовки, проверь, не дублируются ли они.

2. Увеличить лимит в Envoy

Если уменьшить заголовки не получается (или это временное решение), можно поднять лимит. Способ зависит от того, как именно у тебя используется Envoy.

  • Если это Istio sidecar, можно задать аннотацию в DestinationRule или через EnvoyFilter.
    Например, через аннотацию к поду (для sidecar):

    yaml

    1234567
    traffic.sidecar.istio.io/includeInboundPorts: "*"
    proxy.istio.io/config: |
      proxyStatsMatcher:
        inclusionRegexps:
        - ".*"
      # увеличим лимит ответных заголовков
      maxResponseHeadersSize: 96  # значение в КиБ

    Или в EnvoyFilter можно выставить max_response_headers_size в настройках HTTP-менеджера соединений.

  • Если это standalone Envoy, в конфиге envoy.yaml в секции http_connection_manager нужно добавить (или изменить):

    yaml

    1234
    http_filters:
    - name: envoy.filters.http.router
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router

    Параметр max_response_headers_size задаётся на уровне HttpConnectionManager:

    yaml

    123
    http_connection_manager:
      max_response_headers_size: 96  # КиБ (по умолчанию 60)
      ...
  • Если ошибка идёт от ingress-шлюза (например, Istio Ingress Gateway), то параметр нужно менять в конфигурации самого шлюза (через IstioOperator или EnvoyFilter для gateway).

3. Как быстро проверить размер заголовков

Можно курлом запросить сервис напрямую (в обход Envoy) и посмотреть суммарный объём заголовков:

bash

1
curl -s -o /dev/null -D - http://твой-сервис:порт/путь | wc -c

Если цифра под 60 000 или выше — точно проблема в этом.

Если уточнишь, где именно всплыла ошибка (в поде с сайдкаром, на Ingress Gateway или в кастомном Envoy), могу дать более точный рецепт для твоего «фасика» 😉



Видео по теме