Как мы снизили медианную задержку на 37%
Рассказываем, что на самом деле влияло на отклик: не каналы, а маршрутизация внутри контура и лишние хопы между зонами.
Когда мы запускали приватную магистраль, медианная задержка между Европой и Азией держалась на уровне 29 мс. Казалось, что это предел: физика каналов, расстояние, ничего не сделать. Через полгода мы вышли на 18 мс — и почти вся разница оказалась не в каналах.
Что мы измеряли сначала
Первая ошибка — смотреть на средние значения по регионам. Среднее скрывало проблему: 80% запросов шли быстро, а 20% застревали на 60–90 мс. Именно они портили ощущение от продукта.
- Разложили запрос на этапы: DNS, установка соединения, маршрут, обработка, ответ.
- Сравнили p50 и p95 по каждой паре регионов.
- Отдельно посчитали долю запросов, которые проходили через промежуточную зону.
Оказалось, что часть трафика между двумя соседними регионами уходила через третью зону — просто потому, что так исторически сложилась таблица маршрутов. Хоп добавлял 9–12 мс и лишнюю точку отказа.
Что изменили
Мы переписали выбор маршрута: теперь узел строит путь по актуальной карте задержек, а не по статической таблице. Карта обновляется каждые 30 секунд по результатам активных проб между зонами.
Самое сложное было не построить карту, а перестать доверять старой конфигурации, которая работала годами.
Дополнительно мы убрали повторное шифрование на промежуточных узлах: сессия устанавливается один раз, а внутри магистрали трафик идёт в уже защищённом туннеле. Это дало ещё 4 мс и заметно снизило нагрузку на CPU.
Результат
- Медиана между Европой и Азией: 29 → 18 мс.
- p95: 94 → 41 мс.
- Доля запросов с промежуточной зоной: 31% → 4%.
Мы продолжаем мерить каждую пару регионов и публикуем сводку в статусе. Если задержка растёт, это видно раньше, чем приходят жалобы.