SlideShare una empresa de Scribd logo
1 de 40
Скорость с доставкой
до пользователя
Анатолий Орлов, ex-Яндекс
Денис Нагорнов, Яндекс
v. 0.5hd
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, то играться с протоколами
можно прямо сейчас.

Más contenido relacionado

La actualidad más candente

Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикAndrew Minkin
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Ontico
 
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
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...SQALab
 
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Ontico
 
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Ontico
 
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Ontico
 
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиКак мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиtfmailru
 
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
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Fuenteovejuna
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted PythonHighLoad2009
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
gRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийgRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийMad Devs
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, BadooOntico
 
Установка и настройка клиентского ПО TrueConf Client
Установка и настройка клиентского ПО TrueConf ClientУстановка и настройка клиентского ПО TrueConf Client
Установка и настройка клиентского ПО TrueConf ClientTrueConf
 
Golang в avito
Golang в avitoGolang в avito
Golang в avitoAvitoTech
 

La actualidad más candente (18)

Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
 
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]
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
 
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
 
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
 
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиКак мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
 
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...
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
gRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийgRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложений
 
On Docker
On DockerOn Docker
On Docker
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Установка и настройка клиентского ПО TrueConf Client
Установка и настройка клиентского ПО TrueConf ClientУстановка и настройка клиентского ПО TrueConf Client
Установка и настройка клиентского ПО TrueConf Client
 
Golang в avito
Golang в avitoGolang в avito
Golang в avito
 

Destacado

How to Successfully Engage Your Experiential Event Attendees
How to Successfully Engage Your Experiential Event AttendeesHow to Successfully Engage Your Experiential Event Attendees
How to Successfully Engage Your Experiential Event AttendeesBrilliant Transportation
 
Elementos de-la-interfaz-de-flash.html
Elementos de-la-interfaz-de-flash.htmlElementos de-la-interfaz-de-flash.html
Elementos de-la-interfaz-de-flash.htmlBeatriz Pérez Díaz
 
Por la ciudad de Cuenca
Por la ciudad de CuencaPor la ciudad de Cuenca
Por la ciudad de CuencaLogos Academy
 
Contamincacion ambiental en el ecuador
Contamincacion ambiental en el ecuadorContamincacion ambiental en el ecuador
Contamincacion ambiental en el ecuadorSebastiancoboslopezz
 
Downshifting en un mundo impermanente
Downshifting en un mundo impermanenteDownshifting en un mundo impermanente
Downshifting en un mundo impermanenteSynergo!
 
Dont Get Lost Discover Findability - Gary Hayes
Dont Get Lost Discover Findability - Gary HayesDont Get Lost Discover Findability - Gary Hayes
Dont Get Lost Discover Findability - Gary HayesGary Hayes
 
CostcoGrantApplication
CostcoGrantApplicationCostcoGrantApplication
CostcoGrantApplicationAjane Burnley
 
コミュニティでの動画配信の広がり、それらをささえるツール
コミュニティでの動画配信の広がり、それらをささえるツールコミュニティでの動画配信の広がり、それらをささえるツール
コミュニティでの動画配信の広がり、それらをささえるツールIppei Ogiwara
 
Competencias Conversacionales para el Marketing: Liderando las relaciones y ...
Competencias Conversacionales para el Marketing:  Liderando las relaciones y ...Competencias Conversacionales para el Marketing:  Liderando las relaciones y ...
Competencias Conversacionales para el Marketing: Liderando las relaciones y ...Synergo!
 
Desarrollo habilidades coaching
Desarrollo habilidades coachingDesarrollo habilidades coaching
Desarrollo habilidades coachingVictor Peña
 
Introducción al Coaching de Ejecutivo
Introducción al Coaching de EjecutivoIntroducción al Coaching de Ejecutivo
Introducción al Coaching de EjecutivoFelipe Vazquez
 
El ser humano con ente biopsicosocial.
El ser humano con ente biopsicosocial.El ser humano con ente biopsicosocial.
El ser humano con ente biopsicosocial.fernand9
 
Capitulo 4.1 guía para el uso saludable de la computadora1
Capitulo 4.1 guía para el uso saludable de la computadora1Capitulo 4.1 guía para el uso saludable de la computadora1
Capitulo 4.1 guía para el uso saludable de la computadora1Marisol Martinez-Vega
 

Destacado (20)

How to Successfully Engage Your Experiential Event Attendees
How to Successfully Engage Your Experiential Event AttendeesHow to Successfully Engage Your Experiential Event Attendees
How to Successfully Engage Your Experiential Event Attendees
 
Mylanda-Price (9)
Mylanda-Price (9)Mylanda-Price (9)
Mylanda-Price (9)
 
Planeta tierra
Planeta tierraPlaneta tierra
Planeta tierra
 
Elementos de-la-interfaz-de-flash.html
Elementos de-la-interfaz-de-flash.htmlElementos de-la-interfaz-de-flash.html
Elementos de-la-interfaz-de-flash.html
 
Protección del suelo
Protección del sueloProtección del suelo
Protección del suelo
 
about Me
about Meabout Me
about Me
 
Por la ciudad de Cuenca
Por la ciudad de CuencaPor la ciudad de Cuenca
Por la ciudad de Cuenca
 
Contamincacion ambiental en el ecuador
Contamincacion ambiental en el ecuadorContamincacion ambiental en el ecuador
Contamincacion ambiental en el ecuador
 
Downshifting en un mundo impermanente
Downshifting en un mundo impermanenteDownshifting en un mundo impermanente
Downshifting en un mundo impermanente
 
Memo Assignment
Memo AssignmentMemo Assignment
Memo Assignment
 
Dont Get Lost Discover Findability - Gary Hayes
Dont Get Lost Discover Findability - Gary HayesDont Get Lost Discover Findability - Gary Hayes
Dont Get Lost Discover Findability - Gary Hayes
 
CostcoGrantApplication
CostcoGrantApplicationCostcoGrantApplication
CostcoGrantApplication
 
コミュニティでの動画配信の広がり、それらをささえるツール
コミュニティでの動画配信の広がり、それらをささえるツールコミュニティでの動画配信の広がり、それらをささえるツール
コミュニティでの動画配信の広がり、それらをささえるツール
 
Competencias Conversacionales para el Marketing: Liderando las relaciones y ...
Competencias Conversacionales para el Marketing:  Liderando las relaciones y ...Competencias Conversacionales para el Marketing:  Liderando las relaciones y ...
Competencias Conversacionales para el Marketing: Liderando las relaciones y ...
 
Desarrollo habilidades coaching
Desarrollo habilidades coachingDesarrollo habilidades coaching
Desarrollo habilidades coaching
 
Busqueda De Empleo
Busqueda De EmpleoBusqueda De Empleo
Busqueda De Empleo
 
Introducción al Coaching de Ejecutivo
Introducción al Coaching de EjecutivoIntroducción al Coaching de Ejecutivo
Introducción al Coaching de Ejecutivo
 
El ser humano con ente biopsicosocial.
El ser humano con ente biopsicosocial.El ser humano con ente biopsicosocial.
El ser humano con ente biopsicosocial.
 
COACHING EJECUTIVO
COACHING EJECUTIVOCOACHING EJECUTIVO
COACHING EJECUTIVO
 
Capitulo 4.1 guía para el uso saludable de la computadora1
Capitulo 4.1 guía para el uso saludable de la computadora1Capitulo 4.1 guía para el uso saludable de la computadora1
Capitulo 4.1 guía para el uso saludable de la computadora1
 

Similar a 2015-12-05 Анатолий Орлов - Скорость с доставкой до пользователя

Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...
Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...
Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...Ontico
 
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...Ontico
 
Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...
Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...
Сетевая диагностика: новый взгляд сквозь старые щели / Евгений Усков (Qrator ...Ontico
 
Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Cisco Russia
 
Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуYandex
 
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Cisco Russia
 
Виртуализированные сетевые сервисы на 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
 
Солидекс ПИ - ЦОДы
Солидекс ПИ - ЦОДыСолидекс ПИ - ЦОДы
Солидекс ПИ - ЦОДыSergey Polazhenko
 
High performance computing принципы проектирования сети
High performance computing принципы проектирования сетиHigh performance computing принципы проектирования сети
High performance computing принципы проектирования сетиMUK Extreme
 
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...Mad Devs
 
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...Ontico
 
«Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» «Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» Гузель Рахимова
 
Работа с геоданными в Go GDGNSK / Work with Geodata in Go
Работа с геоданными в Go GDGNSK / Work with Geodata in GoРабота с геоданными в Go GDGNSK / Work with Geodata in Go
Работа с геоданными в Go GDGNSK / Work with Geodata in GoMad Devs
 
GDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в GoGDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в GoAndrew Minkin
 

Similar a 2015-12-05 Анатолий Орлов - Скорость с доставкой до пользователя (20)

Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...
Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...
Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...
 
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (...
 
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.
 
Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизу
 
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 принципы проектирования сети
 
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
 
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
 
«Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» «Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум»
 
Работа с геоданными в Go GDGNSK / Work with Geodata in Go
Работа с геоданными в Go GDGNSK / Work with Geodata in GoРабота с геоданными в Go GDGNSK / Work with Geodata in Go
Работа с геоданными в Go GDGNSK / Work with Geodata in Go
 
GDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в GoGDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в Go
 

Más de HappyDev

2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...HappyDev
 
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?HappyDev
 
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli scriptHappyDev
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?HappyDev
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данныхHappyDev
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...HappyDev
 
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложенийHappyDev
 
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложенийHappyDev
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBenchHappyDev
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестированииHappyDev
 
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...HappyDev
 
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...HappyDev
 
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...HappyDev
 
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерахHappyDev
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...HappyDev
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...HappyDev
 
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...HappyDev
 
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхроннымHappyDev
 
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...HappyDev
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых системHappyDev
 

Más de HappyDev (20)

2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
 
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
 
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
 
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
 
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
 
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
 
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
 
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
 
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
 
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
 
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
 
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
 

2015-12-05 Анатолий Орлов - Скорость с доставкой до пользователя

Notas del editor

  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 между пакетиками, чтобы они успевали пролезать в повод. Важное замечание что если вы пишите мобильное приложение, то вы контролируете клиентскую сторону тоже, можете прямо сейчас пользоваться.