Что такое latency и как её сократить
На скорость веб-ресурса влияет множество факторов. Один из них — сетевая задержка, или latency. Давайте разбираться, что это такое, как влияет на работу приложений и как её можно сокращать.
Что такое задержка (latency)
В широком смысле — любое промедление во времени при выполнении каких-либо операций. Бывают разные: сетевые, звуковые, при отправке видео в прямых трансляциях, на уровне накопителей и другие.
Фактически любой из этих типов — следствие ограничений скорости, с которой может доставляться сигнал.
Большинство типов измеряется в миллисекундах, но не все. Например, при общении CPU и SSD для измерения используются микросекунды.
Но в этом материале мы будем говорить именно о сетевых задержках и под термином latency будем иметь в виду именно их.
Сетевые задержки возникают при доставке информации по сети из точки A в B.
Представьте веб-приложение, которое развёрнуто в дата-центре в Париже. В это приложение заходит пользователь из Рима. Браузер отправляет запрос в 9:22:03.000. Сервер получает его в 9:22:03.174. Запрос поступил позже на 174 мс.
Это несколько упрощённый пример. Надо отметить, что при измерении не учитывается объём файлов. 1 000 МБ будут отправляться дольше, чем 1 КБ. Однако быстрота передачи может быть одинаковой, и задержка в этом случае тоже будет одинаковой.
Понятие в основном используется, когда речь идёт о взаимодействии пользовательских девайсов с дата-центром. С меньшими задержками юзеры скорее получат доступ к приложению, которое размещено в дата-центре.
Передавать данные совсем мгновенно невозможно, так как ничто не может быть быстрее скорости света.
От чего зависит сетевая задержка
Основной влияющий фактор — расстояние. Чем ближе источник контента к пользователям, тем раньше дойдут сообщения.
Допустим, от Рима до Неаполя (чуть меньше 200 км) пакет дойдёт примерно за 10 мс. А от Рима до Майами (чуть больше 8 000 км) тот же пакет при тех же условиях дойдёт примерно за 120 мс.
Есть и другие факторы.
Качество сети. При доставке трафика свыше 10 Гбит/с медные кабели и соединения показывают слишком большое затухание сигнала даже на коротких расстояниях, в пределах нескольких метров. Отсюда возникает низкая пропускная способность сети. Для высокоскоростной передачи в основном используются оптоволоконные кабели.
Маршрут. Файлы в интернете обычно доставляются не через одну сеть. Они проходят через несколько автономных систем (АС). В местах перехода из одной автономной системы в другую маршрутизаторы обрабатывают пакеты и направляют их по нужному направлению. На обработку тратится несколько миллисекунд. Поэтому чем больше АС, IX на пути пакета, тем дольше он будет идти.
Эффективность работы маршрутизаторов. Когда пакеты дойдут до места назначения зависит от того, как быстро их обработают маршрутизаторы.
В некоторых источниках в понятие включается обработка запроса сервером и отправка ответа. В этом случае конфигурация железа, мощность тоже будут иметь значение. Мы будем придерживаться определения, которое дали выше, а оно включает только отправку сигнала к месту назначения.
На что влияют задержки
На другие показатели функционирования веб-ресурса, например RTT и TTFB.
RTT (Round-Trip Time) — промежуток, за который отправленное сообщение доходит до получателя, плюс доставка подтверждения получения. Грубо говоря, это путь туда и обратно.
TTFB (Time To First Byte) — промежуток с момента отправки запроса до получения первого байта. В отличие от предыдущего, этот параметр включает ещё обработку.
Параметры, в свою очередь, воздействуют на пользовательский опыт в целом. Быстрыми ресурсами юзеры будут активнее пользоваться. И наоборот, медленное приложение может приводить к проблемам, негативно сказаться на онлайн-бизнесе.
Какой должна быть оптимальная задержка и как её измерить
Понять, какие у вашего ресурса задержки, проще всего, измерив другие показатели, например RTT. Этот параметр ближе всего к latency. Во многих случаях он будет равен её удвоенному значению (когда путь туда равно пути обратно).
Измерить его очень просто с помощью команды ping. Откройте командную строку, введите ping, а затем IP-адрес или веб-адрес ресурса.
Давайте для примера попробуем пропинговать www.google.com.
C:\Users\username>ping www.google.com
Обмен пакетами с www.google.com [216.58.207.228] с 32 байтами данных
Ответ от 216.58.207.228: число байт=32 время=24мс TTL=16
Ответ от 216.58.207.228: число байт=32 время=24мс TTL=16
Ответ от 216.58.207.228: число байт=32 время=24мс TTL=16
Ответ от 216.58.207.228: число байт=32 время=24мс TTL=16
Параметр «время» — это и есть RTT. Таким образом, в нашем примере он равен 24 мс.
Оптимальное значение зависит от специфики вашего проекта. В среднем большинство специалистов считают хорошим значение меньше 100 мс.
Величина | Что означает |
<100 мс | Очень хорошо, улучшения не обязательны |
100–200 мс | Допустимо, но можно улучшить |
>200 мс | Неудовлетворительно, параметр обязательно нужно улучшать, чтобы избежать проблем |
Как сократить задержку
Вот несколько базовых рекомендаций по снижению latency:
- Сократите дистанцию между источником и пользователями. Старайтесь размещать серверы как можно ближе к вашим клиентам.
- Улучшите связность. Чем больше пиринг-партнёров (точек, с которыми происходит обмен трафиком), вариантов будет, тем лучший маршрут возможно построить, а значит, контент дойдёт раньше.
- Улучшите балансировку трафика. Распределение больших объёмов данных по разным направлениям поможет уменьшить нагрузку. Так трафик будет идти быстрее.
С первым и вторым пунктами поможет CDN — сеть доставки контента, множество связанных кеш-серверов, которые забирают информацию с источника, кешируют её и доставляют кратчайшим путём. Основная её функция — ускорять ресурсы.
Однако не забывайте, что latency — это всего лишь один из факторов, влияющих на пользовательское восприятие взаимодействия с приложением. Бывает так: показатель низкий, а сайт загружается медленно — например, по причине низкой производительности железа.
Для обеспечения высокой скорости приложения, как правило, требуется комплексная оптимизация. Основные советы по ускорению вы найдёте в статье «Как увеличить скорость работы веб-ресурса».
Подведём итоги
- Задержка — это время, нужное, чтобы доставить файлы по сети из одной точки в другую.
- Главный фактор, от которого она зависит, — расстояние. А ещё от качества сети и маршрута (количество точек обмена трафиком).
- Влияет на другие параметры, например на RTT и TTFB. А они, в свою очередь, воздействуют на конверсию и позиции в поисковой выдаче.
- Определить параметр проще всего, измерив RTT. Сделать это можно с помощью команды ping. Оптимальным считается значение менее 100 мс.
- Эффективный способ сократить задержки — подключить CDN. Она уменьшит расстояние между клиентом и источником, улучшит маршрутизацию, и доставит контент в максимально короткий срок.
EdgeCDN обеспечивает высокую скорость доставки контента. Доставляем тяжёлые файлы почти мгновенно, где бы не находилась аудитория.
Есть пробный период. Протестируйте CDN и посмотрите, как ускорится ресурс.