SlideShare a Scribd company logo
1 of 40
Скорость с
доставкой до
пользователя
Анатолий Орлов
Денис Нагорнов
v. 0.5t
430ms
625ms?
Скорость на клиенте
• Что измерять?
– ??? (нет одной циферки)
• Как измерять
– Измерять на клиенте
– Загружать обратно
– Считать статистику
… молоток и гвозди
• API
– Navigation Timing API
– Resource Timing API
– firstPaintTime (Chrome)
– msFirstPaint (IE)
События браузера
Первый байт быстрого* сервера
-500 500 1500 2500 3500
Новосибирск
Владивосток
Алматы
Киев
Астана
Екб
Стамбул
Минск
Анкара
Спб
Москва
50%
70%
90%
95%
Посл. байт быстрого* сервера (60kb)
0 500 1000 1500 2000 2500 3000 3500
Новосибирск
Киев
Алматы
Владивосток
Астана
Екб
Москва
Спб
Стамбул
Минск
Анкара
50%
70%
90%
95%
… наглая ложь, и статистика
• Не все браузеры поддерживают
– На мобилках только Chrome
• Считают разное
– firstPaintTime/msFirstPaint*
• Подвержено bias
До первого байта
0 200 400 600 800 1000 1200 1400
Chrome/Windows
Firefox/Windows
MSIE/Windows
Opera/Windows
Safari/Macintosh
YaBrowser/Windows
Особенности HTTPS
• Должно быть медленней
– время на handshake
• Первый байт быстрее
– aртефакт?
• Становится быстрее*
– What?!
*без НДС
Соотношение…
Proofpic - СПБ
Proofpic - Владивосток
Proofpic - Киев
Киев? Кажется это не великий русский firewall
Proofpic - Стамбул
В Стамбуле с другой стороны нет почти разницы…
(тут 10% https траффика, но влиять не должно)
Конец первой части
• Поняли:
– Серверное время – не всё
– Как измерять клиентское
• Непонятно:
– 0ms (60kb) –> 3249ms в
95%, ping < 200ms
tcpdump - оружие героя
• Можно понять все.
• Сервер знает о доставке.
• tcpdump – трудоемко,
точечно.
• Можно ли
автоматизировать?
tcplanz
• github.com/yandex/tcplanz
• Парсит tcpdump-ы, быстро
• Hardcore tool, не продукт.
Постановка проблемы
Распределение
490ms
170ms
Web сервер отработал за 170ms,
а TCP стек решил задержать на 320
TCP за 1 слайд
• rtt – время туда и обратно.
ping ~ rtt.
• ACK – подтверждение
доставки
• cwnd – сколько можно
отослать без
подтверждения
Скорость доставки
• На каждые CWND пакетов
нам нужно rtt времени.
• cwnd = 10, rtt=100, 145kb/s
• cwnd = 100, rtt=50, 2900kb/s
• cwnd медленно растет, пока
все хорошо, сильно падает,
когда пакет теряется.
TCP - Summary
• Новейшие технологии 70-х
• Для деления канала, не
для latency
• Для проводов
• Потеря -> congestion
WiFi
Длина волны 2.4Ghz – 12.5 сантиметров
Пакеты пропадают сами по себе без congestion
WiFi vs TCP
Уменьшайте
размер*
странички
CDN для динамики
Крутите параметры
• Параметр Initial CWND
• Initial CWND=10
(был = 4, до этого =2)
• Страничка в 60кб ~ 40
пакетов ~ 3-4 rtt.
Initial cwnd=20
Разница между первым
и последним пакетом ответа
Разница между ACK последнего
пакета от пользователя
Безумный пример
• Игнорируем cwnd, шлем все 40 пакетов
каждую 1ms следующий.
• Получаем selective ack, досылаем то, что
потерялось.
• Страница на хорошем канале придет за 1-2
rtt, на плохом будет хуже.
• Сейчас такое сделать нельзя* в QUIC
можно
* внутри CDN примерно так все и ходит, cwnd
учитывается, но он запредельного размера.
Итоги
• Задержку доставки сервер делает
сам из-за ограничений протоколов
• Серебряной пули нет, но место
для оптимизаций есть.
• Делая оптимизации следите за
метриками Timing API и tcpdump
Спасибо!
Вопросы?
Анатолий Орлов
anatolix@yandex.ru
Денис Нагорнов
den@yandex-team.ru
Выкинуто
• Тут остались слайды,
которые видимо не удастся
рассказать, так чтобы все
поняли
Пару слов о HTTP
• Новейший протокол 90-х
• Второй запрос в
соединении = лишний rtt.
• Количество соединений
ограничено.
• Фиксится SPDY/HTTP2
GPRS/Edge/LTE
• Первые два просто медленные с
большим RTT
• сами разбираются ретрансмитами
(см. HARQ), может страдать Latency
• Ретрансмит внутри LTE выглядит для
TCP как самопроизвольное временное
возрастание rtt. Будет ли лишний
ретрансмит от TCP?
• Мелкий декларируемый application
window у мобильников
QUIC
• Сейчас революционного ничего нет.
• Вытаскивает в user-space то, что
сейчас зашито в ядре
– Можно сделать разную политику передачи в
зависимости от user agent.
• Если вы пишите приложение под
iPhone/Android, то играться с
протоколами можно прямо сейчас.

More Related Content

What's hot

Elutin lvs prez-2
Elutin lvs prez-2Elutin lvs prez-2
Elutin lvs prez-2kuchinskaya
 
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Ontico
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Ontico
 
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Ontico
 
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикадSpblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикадKonstantin Novakovksy
 
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикAndrew Minkin
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...SQALab
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Fuenteovejuna
 
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik Naim Shafiev
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, BadooOntico
 
Apache Kafka and stream processing peculiarities [ru]
Apache Kafka and stream processing peculiarities [ru]Apache Kafka and stream processing peculiarities [ru]
Apache Kafka and stream processing peculiarities [ru]Vsevolod Solovyov
 
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Ontico
 
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиКак мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиtfmailru
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted PythonHighLoad2009
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...Yehor Herasymchuk
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...tfmailru
 
Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"railsclub
 

What's hot (18)

Elutin lvs prez-2
Elutin lvs prez-2Elutin lvs prez-2
Elutin lvs prez-2
 
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
 
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
 
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикадSpblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикад
 
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
 
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Apache Kafka and stream processing peculiarities [ru]
Apache Kafka and stream processing peculiarities [ru]Apache Kafka and stream processing peculiarities [ru]
Apache Kafka and stream processing peculiarities [ru]
 
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
 
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиКак мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...
 
Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"
 

Viewers also liked

F soc usic lecture eight
F soc usic lecture eightF soc usic lecture eight
F soc usic lecture eightUSIC
 
Bahasa Arab : Mubtada dan khobar
Bahasa Arab : Mubtada dan khobar Bahasa Arab : Mubtada dan khobar
Bahasa Arab : Mubtada dan khobar manglupi
 
AHMED SAMEER MALIK, New CV
AHMED SAMEER MALIK, New CVAHMED SAMEER MALIK, New CV
AHMED SAMEER MALIK, New CVAhmed Sameer
 
Water Tank-BLUEWAY
Water Tank-BLUEWAYWater Tank-BLUEWAY
Water Tank-BLUEWAYRoger Luo
 
ÄLä pelkää Don't be afraid
ÄLä pelkää   Don't be afraidÄLä pelkää   Don't be afraid
ÄLä pelkää Don't be afraidTerttu Lajunen
 
海德堡大學分享
海德堡大學分享海德堡大學分享
海德堡大學分享Chenjiaen
 
Introducing VineIT and the SimplicITy Suite
Introducing VineIT and the SimplicITy SuiteIntroducing VineIT and the SimplicITy Suite
Introducing VineIT and the SimplicITy SuiteVineIT
 
Monisha pedagogy
Monisha pedagogyMonisha pedagogy
Monisha pedagogymonisha22
 
التهتهة لدى الاطفال
التهتهة لدى الاطفالالتهتهة لدى الاطفال
التهتهة لدى الاطفالOsama Madbooly
 
NETWORK NEUTRALITY
NETWORK NEUTRALITYNETWORK NEUTRALITY
NETWORK NEUTRALITYAnish kamat
 
LSE Enterprise Annual Report 2015
LSE Enterprise Annual Report 2015LSE Enterprise Annual Report 2015
LSE Enterprise Annual Report 2015LSE Enterprise
 
CV and Supporting Document
CV and Supporting DocumentCV and Supporting Document
CV and Supporting Documentgomal silalahi
 
5 content marketing tools
5 content marketing tools5 content marketing tools
5 content marketing toolsHusni Ahamed
 
2Bhk flat with an area of 873sqft available at Khardah near Rohora Bazar
2Bhk flat with an area of 873sqft available at Khardah near Rohora Bazar2Bhk flat with an area of 873sqft available at Khardah near Rohora Bazar
2Bhk flat with an area of 873sqft available at Khardah near Rohora Bazarredantrealty2
 

Viewers also liked (17)

F soc usic lecture eight
F soc usic lecture eightF soc usic lecture eight
F soc usic lecture eight
 
2
22
2
 
2
22
2
 
Bahasa Arab : Mubtada dan khobar
Bahasa Arab : Mubtada dan khobar Bahasa Arab : Mubtada dan khobar
Bahasa Arab : Mubtada dan khobar
 
AHMED SAMEER MALIK, New CV
AHMED SAMEER MALIK, New CVAHMED SAMEER MALIK, New CV
AHMED SAMEER MALIK, New CV
 
Water Tank-BLUEWAY
Water Tank-BLUEWAYWater Tank-BLUEWAY
Water Tank-BLUEWAY
 
ÄLä pelkää Don't be afraid
ÄLä pelkää   Don't be afraidÄLä pelkää   Don't be afraid
ÄLä pelkää Don't be afraid
 
海德堡大學分享
海德堡大學分享海德堡大學分享
海德堡大學分享
 
Introducing VineIT and the SimplicITy Suite
Introducing VineIT and the SimplicITy SuiteIntroducing VineIT and the SimplicITy Suite
Introducing VineIT and the SimplicITy Suite
 
Kym carter
Kym carterKym carter
Kym carter
 
Monisha pedagogy
Monisha pedagogyMonisha pedagogy
Monisha pedagogy
 
التهتهة لدى الاطفال
التهتهة لدى الاطفالالتهتهة لدى الاطفال
التهتهة لدى الاطفال
 
NETWORK NEUTRALITY
NETWORK NEUTRALITYNETWORK NEUTRALITY
NETWORK NEUTRALITY
 
LSE Enterprise Annual Report 2015
LSE Enterprise Annual Report 2015LSE Enterprise Annual Report 2015
LSE Enterprise Annual Report 2015
 
CV and Supporting Document
CV and Supporting DocumentCV and Supporting Document
CV and Supporting Document
 
5 content marketing tools
5 content marketing tools5 content marketing tools
5 content marketing tools
 
2Bhk flat with an area of 873sqft available at Khardah near Rohora Bazar
2Bhk flat with an area of 873sqft available at Khardah near Rohora Bazar2Bhk flat with an area of 873sqft available at Khardah near Rohora Bazar
2Bhk flat with an area of 873sqft available at Khardah near Rohora Bazar
 

Similar to Скорость с доставкой до пользователя

Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...
Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...
Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...Ontico
 
Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Cisco Russia
 
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...Ontico
 
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Cisco Russia
 
Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуYandex
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Ontico
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Ontico
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Технополис: Сетевой стек
Технополис: Сетевой стекТехнополис: Сетевой стек
Технополис: Сетевой стекDmitry Samsonov
 
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)AvitoTech
 
High performance computing принципы проектирования сети
High performance computing принципы проектирования сетиHigh performance computing принципы проектирования сети
High performance computing принципы проектирования сетиMUK Extreme
 
gRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийgRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийMad Devs
 
Солидекс ПИ - ЦОДы
Солидекс ПИ - ЦОДыСолидекс ПИ - ЦОДы
Солидекс ПИ - ЦОДыSergey Polazhenko
 
Тандемные DDoS-атаки (Артём Гавриченков)
Тандемные DDoS-атаки (Артём Гавриченков)Тандемные DDoS-атаки (Артём Гавриченков)
Тандемные DDoS-атаки (Артём Гавриченков)Ontico
 
Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...
Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...
Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...HLL
 
High performance computing - принципы проектирования сети
High performance computing - принципы проектирования сетиHigh performance computing - принципы проектирования сети
High performance computing - принципы проектирования сетиMUK
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Ontico
 
«Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» «Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» Гузель Рахимова
 

Similar to Скорость с доставкой до пользователя (20)

Rc uskov
Rc uskovRc uskov
Rc uskov
 
RootConf 2015
RootConf 2015RootConf 2015
RootConf 2015
 
Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...
Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...
Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...
 
Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.
 
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
 
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
 
Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизу
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Технополис: Сетевой стек
Технополис: Сетевой стекТехнополис: Сетевой стек
Технополис: Сетевой стек
 
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
 
High performance computing принципы проектирования сети
High performance computing принципы проектирования сетиHigh performance computing принципы проектирования сети
High performance computing принципы проектирования сети
 
gRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийgRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложений
 
Солидекс ПИ - ЦОДы
Солидекс ПИ - ЦОДыСолидекс ПИ - ЦОДы
Солидекс ПИ - ЦОДы
 
Тандемные DDoS-атаки (Артём Гавриченков)
Тандемные DDoS-атаки (Артём Гавриченков)Тандемные DDoS-атаки (Артём Гавриченков)
Тандемные DDoS-атаки (Артём Гавриченков)
 
Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...
Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...
Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...
 
High performance computing - принципы проектирования сети
High performance computing - принципы проектирования сетиHigh performance computing - принципы проектирования сети
High performance computing - принципы проектирования сети
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
 
«Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» «Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум»
 

Скорость с доставкой до пользователя

Editor's Notes

  1. Многие компании следят за скоростью формирования страниц. Многие ей гордятся и пишут на видном месте. Что же они измеряют?
  2. По данным броузера 625ms != 430 ms На предыдущей страничке написано серверное время которое пользователя на самом деле волнует мало. Серверное время пригодно только для того, чтобы программисты выясняли кто круче.
  3. Вопрос что мерять, неожиданно сложный на него нет однозначного ответа. Загрузка не атомарное событие, а очень даже сложный процесс. Одну циферку получить сложно. Например когда вы загружаете войну и мир, у вас часто она загружается несколько минут, но читать вы можете сразу. Т.е. страничка юзабельна до полной загрузки. На многих сайтах сразу грузится навигация, т.к. она в кэше, а контент грузится позже. Для каждого конкретного сайта тем не менее можно найти консенсус, например для выдачи яндекса это прорисовка первого сниппета. Только это нельзя измерить.
  4. Если из ваших инструментов только молоток все ваши проблемы похожи на гвозди. На самом деле весь developer tools в JS не доступен. Доступно то, что на экране. Есть предложение мерять скорость java script на клиенте, загружать результаты обратно, и уже строить клиентские метрики. Очевидно у клиентов, а не на вашем тестовом комьютере
  5. Очень упрощено, много событий выкинуто, dns, tcp handshake. Совсем не рассмотрено время загрузки ресурсов Что из этого выбрать KPI для нашего сайта? Хотим одну цифру. Одну цифру выбрать нельзя.
  6. Доставка первого байта моментально отвечающего сервера
  7. Доставка последнего байта моментально отвечающего сервера. Чтобы не делать тестовый стенд, мы взяли какую-то не быструю страничку яндекса и вычли серверное время из результата.
  8. Есть ложь, наглая ложь и статистика. То что вы получаете будет статистикой. Нужно понимать что у вас смещенная выборка не со всех броузеров. У вас два разных события отрисовки, которые конечно означают разное.
  9. Смотрите какой охрененно быстрый броузер Safari. Разве мы не за это любим Apple? Голосование: Кто согласен что Apple делает самые крутые компы и софт? А кто считает, что тут херня нарисована? (правы люди проголосовавшие за второй пункт, Safari в основном находится в москве, и у интернет специалистов, у которых интернет быстрый)
  10. handshake скорее всего считается за первый байт.
  11. Тут понятная анимация т.к. все уже забыли что сдесть нарисовано.
  12. График требует осознания. По вертикали две точки, зеленая это время до первого байта, черная это время передачи. По горизонтали номер запроса. Запросы сортированы по времени передачи. Из-за этого черные точки выстроились в линию. У 30% запросов время первого байта искусственно завышено. Зато потом документ приходит сразу. Ответ тут такой это разные системы DPI, вот такой явный эффект это антивирусы.
  13. (но почему-то https все равно быстрее даже по последнему байту). Антивирусы (подтверждено), DPI (не подтверждено, не будет заметно так явно как антивирусы т.к. время загрузки не нулевое). Теория про 443 порт вне фильтров. Ссылка про парсинг DPI на карте.
  14. Сервер знает о доставке всех пакетов. Ему приходит ACK с этой информацией. Даже для тех у кого нет Timing API
  15. Тулза разбирающая tcpdump-ы в статистику. open source версия многое отломано. В яндексе работала в mapreduce environment, поддержка https недоделана, отчеты временно выкинуты. Не совсем законченный продукт
  16. (картинка) Есть nginx, с одной стороны от него пользователь, с дугой стороны какой-то backend. Снимем на nginx tcpdump, с обоих интерфейсов внешнего и внутреннего, у нас есть request_id и мы умеем приклеивать внешний запрос к внутреннему. Попробуем понять измерить “время до последнего байта” по tcpdump, а потом понять, что происходит все это время.
  17. Основная задержка которая происходит при доставке происходит на вашем сервере и заключается в том что сервер придерживает пакеты. Серьезно. Вы оптимизируете ваш серверный код на 100ms и это круто, а Ваш сервер сервер задерживает пакеты на 500ms. Нахрена он это делает? Для того чтобы понять почему именно надо маленько знать как tcp устроен.
  18. Наверное сложно в 1 слайде рассказать как работает TCP, по хорошему наверное нужно 10 слайдов, рассказывать не хочется т.к. будет скучно тем кто знает. Поэтому расскажу 3 термина которые нужны для понимания. 1) Rtt время туда и обратно. Ограниченно скоростью света и тормозами девайсов. 1) Другая сторона шлет нам пакетики в ответ на получение наших пакетиков. Не на каждый пакет. Если бы мы ждали подтверждение предыдущего пакета перед посылом следующего то мы могли бы посылать 1000/rtt пакетов в секунду. Пакет примерно 1450 байт. Т.е. При ping=100 мы бы могли протолкнуть максимум 14.5кб в секунду. Поэтому мы ждем подтверждения не каждого пакета. 2) Cwnd сколько пакетов можно послать без подтверждения. Если мы на широком канале(например мы сервер) то на каждые CWND пакетов мы тратим один rtt.
  19. Протокол старый сделан в 70-х. Он универсальный = потрясающе хреновый для всего Вообще он сделан для того чтобы поровну поделить канал в не очень быстрой сети Т.е. он пихает пакетики увеличивая скорость и считает что если пакетик потерялся значит скорость превышена. Про ситуации, что пакетик потерялся просто так, а не из-за скорости данный протокол не верит. Ну т.е. правда, в медных проводах такого почти не происходит. Оптимизирован для thruput(притом группового) не для latency ни разу.
  20. Вот так работат wifi кто не знал, многие люди считают, что он ходит сквозь стены. Да ходит но только где нет металла, а там либо арматура либо сетка.
  21. Тут постановка проблемы, когда мы складываем проводную сеть на rtt100 с потерей 0% и wifi c rtt1 с потерей 5% мы получаем канал с потерей 5% и rtt=100
  22. В первую очередь блокирующий размер, неблокирующий можно не уменьшать.
  23. CDN полезны даже для динамики, т.к. Рвут канал на два независимых. Идея для стартапа – wifi роутер с прозрачным proxy, на обычный роутер такую прошивку поставить нельзя, там памяти столько что хватит на одну картинку. Если кто будет делать сначала почитайте про Bufferbloat чтобы понять что проблема не такая простая.
  24. Т.е. когда к вам кто-то пришел можно ему послать 10 пакетов = 14.5кб, потом надо ждать подтверждение. Откуда взялось число 10? Оно какое-то подозрительно круглое для того, чтобы быть научно обоснованным. Ну и наврядли мы мы серьезно думаем, что оно одинаково хорошо для человека на gprs, и на 1Gb оптике, в соседней комнате и на другом материке? Краткая история возникновения, там сначала было 2, потом было 4, а потом решили сделать 10. Экспоненциальный прогресс на лицо. Все это приводит к тому, что отдавая морду в 60кб нам нужно ждать 3-4 rtt, т.е. 300-500ms
  25. Результаты экспериментов initial cwnd=20. Вообще для морды это помогло, для поиска результаты были странные что-то перетряхнуло, где-то стало быстрее где-то медленней. Замечу что это initial cwnd, т.е. Если его указать неправильно TCP все равно его приведет в нужное состояние. Прямого контроля над cwnd у нас нет, если только вы не готовы в ядро залезть. Учитывая что cwnd надо скорее всего контролировать по разному в зависимости от user agent
  26. Например сайт с 60 ресурсами типа картинок и css при ограничении в 6 соединений влетает на 10rtt (проверить правда ли про 6 в хроме). Правда это уже не очень важно т.к. страничка скорее всего отобразится и так, но на старте с css и прочим все равно будет веселуха. Вот почему много, кто предпочитает все инлайнить, например google, даже для SPDY почему-то.
  27. Про LTE я на самом деле мало знаю, но в отличие от wifi там есть встроенные ретрансмиты для данных уровнем ниже чем TCP. Мне кажется что когда протокол под TCP делает ретрансмиты то для TCP это выглядит как рандомное изменение Latency От чего “современный протокол TCP(tm)” должен херачить тоннуб лишних ретрансмитов, которые засирают и так неширокий мобильный канал. Я слышал об оборудовании которое TCP пересобирает для мобильщиков но точно не знаю.
  28. Тут вполне нормально реализовать какой-нибудь machine learning который в зависимости от типа клиента по разному ему выплевывает пакетики. Идеальная ситуация что мы например посылаем всю страницу сразу, но с перерывами в 2-5 ms между пакетиками, чтобы они успевали пролезать в повод. Важное замечание что если вы пишите мобильное приложение, то вы контролируете клиентскую сторону тоже, можете прямо сейчас пользоваться.