Книга «Высокопроизводительные браузерные сети» от Ильи Григорика отвечает именно на это. Целая глава (7) посвящена мобильным сетям. В книге говорится, что проблема с высокой производительностью почти всегда связана с задержкой, у нас обычно много пропускной способности, но протоколы мешают. Будь то медленный запуск TCP , контроллер радиоресурсов (RRC) или неоптимальные конфигурации. Если вы испытываете низкую задержку только в мобильных сетях, то так, как они спроектированы.
В книге есть таблица типичных задержек:
Таблица 7-2. Скорость передачи данных и задержка для активного мобильного соединения
Поколение | Скорость передачи данных | Задержка
2G | 100–400 кбит / с | 300–1000 мс
3G | 0,5–5 Мбит / с | 100–500 мс
4G | 1–50 Мбит / с | <100 мс
Хотя характерные для латентности задержки характерно трехстороннее рукопожатие TCP или медленный запуск, на самом деле это не отвечает, так как они одинаково влияют на проводные соединения. Что действительно влияет на задержку в мобильных сетях, так это уровень IP. Если у слоя под IP задержка составляет полсекунды, TCP-соединение с сервером займет ~ 1,5 сек (0,5 с * 3), как вы видите, цифры быстро складываются. Как уже было сказано, предполагается, что мобильный не простаивает. Если трубка находится в режиме ожидания, она сначала должна «подключиться» к сети, что требует согласования запаса ресурсов с вышкой (упрощенно), что занимает от 50 до 100 мс в LTE, до нескольких секунд в 3G и т. Д. в более ранних сетях.
Рисунок 7-12. Задержки потока запросов LTE
- Задержка плоскости управления : фиксированная стоимость единовременной задержки, понесенная для согласования RRC и переходов между состояниями: <100 мс для режима ожидания и активного состояния и <50 мс для режима ожидания в нерабочем состоянии.
- Задержка плоскости пользователя : фиксированная стоимость для каждого пакета приложения, передаваемого между устройством и радиомачтой: <5 мс.
- Задержка базовой сети: зависящая от оператора стоимость транспортировки пакета от радиомачты к шлюзу пакетов: на практике, 30–100 мс.
- Задержка маршрутизации Интернет: переменная стоимость задержки между пакетным шлюзом оператора связи и адресом назначения в общедоступном Интернете.
На практике сквозная задержка многих развернутых сетей 4G имеет тенденцию находиться в диапазоне 30–100 мс, когда устройство находится в подключенном состоянии.
Итак, у вас есть для одного запроса (рисунок 8-2. Компоненты «простого» HTTP-запроса):
- Переговоры RRC 50-2500 мс
- DNS lookup 1 RTT
- TCP рукопожатие 1 RTT (существующее соединение) или 3 RTT (новое соединение)
- TLS рукопожатие 1-2 РТЦ
- HTTP-запрос 1-н RTT
И с реальными данными:
Таблица 8-1. Издержки задержки одного HTTP-запроса
| 3G | 4G
Плоскость управления | 200–2500 мс | 50–100 мс
Поиск DNS | 200 мс | 100 мс
TCP рукопожатие | 200 мс | 100 мс
TLS рукопожатие | 200–400 мс | 100–200 мс
HTTP-запрос | 200 мс | 100 мс
Общая задержка накладных расходов | 200–3500 мс | 100–600 мс
Кроме того, если у вас есть интерактивное приложение, которое вы хотите выполнять умеренно хорошо в мобильной сети, вы можете поэкспериментировать с отключением алгоритма Nagle (ядро ожидает объединения данных в большие пакеты вместо отправки нескольких меньших пакетов), ищите способы его тестирования. в https://stackoverflow.com/a/17843292/869019 .
Существует возможность бесплатно прочитать всю книгу по адресу https://hpbn.co/, спонсируемой Velocity Conference. Это очень рекомендуемая книга, не только для людей, разрабатывающих веб-сайты, она полезна для всех, кто передает клиенту байты по некоторой сети.