Саме так відповідає книга «Високопродуктивна мережа браузера» від Іллі Григорика. Є ціла глава (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,5s * 3), оскільки ви бачите, що цифри збільшуються досить швидко. Як було сказано раніше, це припущення, що мобільний телефон не працює. Якщо телефон не працює, спочатку потрібно "підключитися" до мережі, що вимагає домовитись про запас ресурсів з вежею (спрощено), і це займе від 50 до 100 мс в LTE, до декількох секунд в 3G і більше у попередніх мережах.
Малюнок 7-12. LTE затримки потоку запитів
- Затримка в контрольній площині : фіксована одноразова затримка, що виникає для узгодження RRC та переходів стану: <100 мс для простою до активного та <50 мс для спокою до активного.
- Затримка в площині користувача : фіксована вартість кожного пакету додатків, переданого між пристроєм та радіовежею: <5 мс.
- Затримка основної мережі: вартість, залежна від перевізника, для транспортування пакета від радіовежі до шлюзу пакетів: на практиці 30–100 мс.
- Затримка маршрутизації в Інтернеті: змінна вартість затримки між шлюзом пакета оператора та адресою призначення в загальнодоступному Інтернеті.
На практиці затримка в кінці багатьох розгорнутих мереж 4G, як правило, знаходиться в діапазоні 30–100 мс, коли пристрій перебуває у підключеному стані.
Отже, у вас є один запит (рис. 8-2. Компоненти "простого" HTTP запиту):
- Узгодження RRC 50-2500 мс
- Пошук DNS 1 RTT
- Рукостискання TCP: 1 RTT (попереднє з'єднання) або 3 RTT (нове з'єднання)
- TLS рукостискання 1-2 RTT
- HTTP-запит 1-n RTT
І з реальними даними:
Таблиця 8-1. Затримка накладних витрат одного запиту HTTP
| 3G | 4G
Площина управління | 200–2 500 мс | 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. Це дуже рекомендується книга не тільки для людей, що розробляють веб-сайти, вона корисна всім, хто обслуговує байти через якусь мережу для клієнта.