Эксплуатация нод

Два хоста на одну ноду: почему часть пользователей тупит

«Быстрый» и «Сильный» варианты одной локации в подписке заставляют клиент метаться между записями. Один инбаунд — один видимый хост.

5 мин чтения

Симптом

У части пользователей — в разобранном случае сотня-полторы — подключение «тупит»: дёргается, не встаёт с первого раза, конфликтует. У остальных всё в порядке. Локация в целом выглядит проблемной, хотя сама нода жива и трафик по ней идёт.

Причина

На одну физическую ноду (один сетевой адрес) в подписке выдано два клиентских хоста-локации. Например «Быстрый» (:443, vision) и «Сильный» (:8443, xhttp), оба указывают на один и тот же address. Клиент получает две записи фактически одной локации и начинает метаться между ними — переключается, переустанавливает соединение. У части пользователей это выливается в устойчивый тупняк.

Важное исключение: скрытые хосты-плечи балансировщика (isHidden: true) — не дубль. Они не выдаются пользователю как отдельная локация и спокойно сосуществуют с видимым хостом на той же ноде.

Решение

Вывод. Если клиенту отдать две записи, указывающие на один ресурс, он не «выберет лучшую» — он будет метаться. Дублирование одного бэкенда под видом двух вариантов выбора создаёт недетерминированное поведение клиента. В любых списках эндпоинтов избегайте скрытых дублей одного адреса; если несколько записей ведут в одно место — это должно быть осознанной ролью (скрытое плечо балансировщика), а не случайностью.

Как подключиться за 2 минуты
Частые вопросы

Частые вопросы

Почему подключение тупит только у части пользователей на одной локации?
Обычно на одну физическую ноду в подписке выдано два клиентских хоста-локации, например «Быстрый» и «Сильный», указывающих на один и тот же адрес. Клиент получает две записи одной локации и начинает метаться между ними, переключаясь и переустанавливая соединение.
Сколько видимых хостов должно быть на одну ноду в подписке?
Один инбаунд ноды должен соответствовать одному видимому клиентскому хосту в подписке. Не стоит делать «быстрый/сильный» варианты одной ноды как две отдельные локации.
Считаются ли скрытые хосты-плечи балансировщика дублем?
Нет, скрытые хосты с isHidden: true — исключение: они не выдаются пользователю как отдельная локация и спокойно сосуществуют с видимым хостом на той же ноде.
Как найти лишний дубль хоста при жалобах на тупняк?
Нужно сгруппировать хосты по адресу и проверить, нет ли двух видимых хостов на один и тот же address — скрытые плечи балансировщика при этом не считаются дублем.
Как лечится проблема двух хостов на одной ноде?
Лишний видимый дубль отключается, на ноде остаётся один видимый хост — это устраняет недетерминированное поведение клиента.
Похожее

Ещё в базе знаний

Подключите рабочий VPN

Инструкции базы знаний написаны под ключи VPN PRO: ключ выдаёт Telegram-бот за минуту, работоспособность гарантируем. Промокод VPN10 — 10 дней бесплатно, без карты.

Промокод VPN10 — 10 дней бесплатно · до 31 августа · передавайте друзьям