На скорость работы веб-ресурса влияет множество факторов. Один из них — сетевая задержка, или latency. Давайте разбираться, что это такое, как задержка влияет на работу приложений и как её можно сокращать.
В широком смысле latency (задержка) — это любая задержка во времени при выполнении каких-либо операций. Задержки бывают разные: сетевые, звуковые, при передаче видео в прямых трансляциях, на уровне накопителей и другие.
Фактически любой тип задержек — это следствие ограничений скорости, с которой может передаваться любой сигнал.
Большинство типов задержек измеряется в миллисекундах, но не все. Например, при общении CPU и SSD для измерения latency используются микросекунды.
Но в этом материале мы будем говорить именно о сетевых задержках и под термином latency будем иметь в виду именно их.
Сетевые задержки (network latency, время ожидания) — это задержки, возникающие при передаче информации по сети из точки A в точку B.
Представьте веб-приложение, которое развёрнуто в дата-центре в Париже. В это приложение заходит пользователь из Рима. Браузер отправляет запрос на сервер в 9:22:03.000 по центральноевропейскому времени. А сервер получает его в 9:22:03.174 по центральноевропейскому времени. Задержка при отправке этого запроса — 174 мс.
Это несколько упрощённый пример. Надо отметить, что при измерении задержек не учитывается объём данных. Чтобы передать 1 000 МБ данных, понадобится больше времени, чем на доставку 1 КБ. Однако скорость передачи данных может быть одинаковой, и задержка в этом случае тоже будет одинаковой.
Понятие сетевых задержек в основном используется, когда речь идёт о взаимодействии между пользовательскими девайсами и дата-центром. Чем меньше задержка, тем быстрее юзеры получат доступ к приложению, которое размещено в дата-центре.
Передавать данные совсем без задержек невозможно, так как ничто не может передаваться быстрее скорости света.
Основной фактор, который влияет на latency, — расстояние. Чем ближе источник информации к пользователям, тем быстрее будут передаваться данные.
Допустим, от Рима до Неаполя (чуть меньше 200 км) запрос дойдёт примерно за 10 мс. А от Рима до Майами (чуть больше 8 000 км) тот же запрос при тех же условиях дойдёт примерно за 120 мс.
Есть и другие факторы, влияющие на сетевую задержку.
Качество сети. На скоростях свыше 10 Гбит/с медные кабели и соединения показывают слишком большое затухание сигнала даже на коротких расстояниях, в пределах нескольких метров. С увеличением скоростей интерфейсов в основном используются оптоволоконные сетевые кабели.
Маршрут. Данные в интернете обычно передаются не через одну сеть. Информация проходит через несколько сетей — автономных систем. В точках перехода из одной автономной системы в другую маршрутизаторы обрабатывают данные и направляют их по нужному маршруту. На обработку тоже тратится время. Поэтому чем больше сетей, чем больше IX на пути пакета, тем дольше он будет идти.
Эффективность работы маршрутизаторов. Чем быстрее маршрутизаторы будут обрабатывать данные, тем быстрее информация дойдёт до точки назначения.
В некоторых источниках в понятие сетевой задержки включается также время обработки запроса сервером и время на отправку ответа. И в этом случае конфигурация сервера, его мощность и скорость работы тоже будут влиять на задержку. Но мы всё же будем придерживаться определения, которое дали выше, а оно включает в себя только время на передачу сигнала к месту назначения.
Задержки влияют на другие показатели скорости работы веб-ресурса, например RTT и TTFB.
RTT (Round-Trip Time, время приёма-передачи) — это время, за которое отправленные данные доходят до точки назначения, плюс время на подтверждение того, что данные были получены. Грубо говоря, это время на путь данных туда и обратно.
TTFB (Time To First Byte, «время до первого байта», время ответа сервера) — это время, прошедшее с момента отправки запроса на сервер до получения первого байта информации от него. В отличие от RTT, этот показатель включает в себя не только время, потраченное на доставку данных, но и время на их обработку сервером.
Эти показатели, в свою очередь, влияют на восприятие скорости и пользовательский опыт в целом. Чем быстрее работает веб-ресурс, тем активнее юзеры будут им пользоваться. И наоборот, медленная работа приложения может негативно сказаться на вашем онлайн-бизнесе.
Понять, какие у вашего ресурса задержки, проще всего, измерив другие показатели скорости, например 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 мс.
Оптимальное значение RTT зависит от специфики вашего проекта. В среднем большинство специалистов считают хорошим показателем меньше 100 мс.
Величина RTT | Что означает |
<100 мс | Очень хорошо, улучшения не обязательны |
100–200 мс | Допустимо, но можно улучшить |
>200 мс | Неудовлетворительно, параметр обязательно нужно улучшать |
Вот несколько базовых рекомендаций:
С первым и вторым пунктами поможет CDN — сеть доставки контента, множество связанных серверов, которые забирают информацию с источника, кешируют её и доставляют кратчайшим маршрутом. Глобальная сеть с хорошей связностью поможет вам значительно сократить задержки.
Однако не забывайте, что latency — это всего лишь один из факторов, влияющих на пользовательское восприятие скорости работы приложения. Бывает так, что задержка очень низкая, а сайт всё равно загружается медленно — например, потому что сервер медленно обрабатывает запросы.
Чтобы существенно ускорить приложение, как правило, нужна комплексная оптимизация. Основные советы по ускорению вы найдёте в статье «Как увеличить скорость работы веб-ресурса».
EdgeЦентр CDN обеспечивает отличную скорость передачи контента. Доставляем тяжёлые файлы с минимальными задержками в любую точку мира.
У нас есть бесплатный пробный период. Протестируйте нашу сеть и посмотрите, как ускорится ваш ресурс.