40
Скорость с доставкой до пользователя Анатолий Орлов Денис Нагорнов v. 0.5t

Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

  • Upload
    ontico

  • View
    3.007

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Скорость с доставкой до пользователяАнатолий ОрловДенис Нагорнов

v. 0.5t

Page 2: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

430ms

Page 3: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

625ms?

Page 4: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Скорость на клиенте• Что измерять?

– ??? (нет одной циферки)• Как измерять

– Измерять на клиенте– Загружать обратно– Считать статистику

Page 5: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

… молоток и гвозди• API

– Navigation Timing API – Resource Timing API– firstPaintTime (Chrome)– msFirstPaint (IE)

Page 6: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

События браузера

Page 7: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Первый байт быстрого* сервера

Новосибирск

Владивосток

Алматы

Киев

Астана

Екб

Стамбул

Минск

Анкара

Спб

Москва

0 500 1000 1500 2000 2500 3000 3500

50%

70%

90%

95%

Page 8: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Посл. байт быстрого* сервера (60kb)

Новосибирск

Киев

Алматы

Владивосток

Астана

Екб

Москва

Спб

Стамбул

Минск

Анкара

0 500 1000 1500 2000 2500 3000 3500

50%

70%

90%

95%

Page 9: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

… наглая ложь, и статистика • Не все браузеры поддерживают

– На мобилках только Chrome• Считают разное

– firstPaintTime/msFirstPaint* • Подвержено bias

Page 10: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

До первого байта

Chrome/Windows

Firefox/Windows

MSIE/Windows

Opera/Windows

Safari/Macintosh

YaBrowser/Windows

0 200 400 600 800 1000 1200 1400

Page 11: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Особенности HTTPS• Должно быть медленней

– время на handshake• Первый байт быстрее

– aртефакт?• Становится быстрее*

– What?!*без НДС

Page 12: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Соотношение…

Page 13: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)
Page 14: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Proofpic - СПБ

Page 15: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Proofpic - Владивосток

Page 16: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Proofpic - Киев

Киев? Кажется это не великий русский firewall

Page 17: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Proofpic - Стамбул

В Стамбуле с другой стороны нет почти разницы…(тут 10% https траффика, но влиять не должно)

Page 18: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Конец первой части• Поняли:

– Серверное время – не всё– Как измерять клиентское

• Непонятно:– 0ms (60kb) –> 3249ms в

95%, ping < 200ms

Page 19: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

tcpdump - оружие героя• Можно понять все.• Сервер знает о доставке.• tcpdump – трудоемко,

точечно.• Можно ли

автоматизировать?

Page 20: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

tcplanz• github.com/yandex/tcplanz• Парсит tcpdump-ы, быстро• Hardcore tool, не продукт.

Page 21: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Постановка проблемы

Page 22: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Распределение

490ms

170ms

Web сервер отработал за 170ms, а TCP стек решил задержать на 320

Page 23: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

TCP за 1 слайд• rtt – время туда и обратно.

ping ~ rtt.• ACK – подтверждение

доставки• cwnd – сколько можно

отослать без подтверждения

Page 24: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Скорость доставки• На каждые CWND пакетов

нам нужно rtt времени.• cwnd = 10, rtt=100, 145kb/s• cwnd = 100, rtt=50, 2900kb/s• cwnd медленно растет, пока

все хорошо, сильно падает, когда пакет теряется.

Page 25: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

TCP - Summary• Новейшие технологии 70-х• Для деления канала, не

для latency• Для проводов• Потеря -> congestion

Page 26: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

WiFi

Длина волны 2.4Ghz – 12.5 сантиметровПакеты пропадают сами по себе без congestion

Page 27: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

WiFi vs TCP

Page 28: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)
Page 29: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Уменьшайтеразмер*

странички

Page 30: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

CDN для динамики

Page 31: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Крутите параметры• Параметр Initial CWND• Initial CWND=10

(был = 4, до этого =2)• Страничка в 60кб ~ 40

пакетов ~ 3-4 rtt.

Page 32: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Initial cwnd=20

Разница между первым и последним пакетом ответа

Разница между ACK последнего пакета от пользователя

Page 33: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Безумный пример• Игнорируем cwnd, шлем все 40 пакетов

каждую 1ms следующий. • Получаем selective ack, досылаем то, что

потерялось. • Страница на хорошем канале придет за 1-2

rtt, на плохом будет хуже.• Сейчас такое сделать нельзя* в QUIC

можно* внутри CDN примерно так все и ходит, cwnd учитывается, но он запредельного размера.

Page 34: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Итоги• Задержку доставки сервер делает

сам из-за ограничений протоколов• Серебряной пули нет, но место

для оптимизаций есть.• Делая оптимизации следите за

метриками Timing API и tcpdump

Page 35: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Спасибо!

Вопросы?Анатолий Орлов

[email protected]Денис Нагорнов

[email protected]

Page 36: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)
Page 37: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Выкинуто• Тут остались слайды,

которые видимо не удастся рассказать, так чтобы все поняли

Page 38: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

Пару слов о HTTP• Новейший протокол 90-х• Второй запрос в

соединении = лишний rtt.• Количество соединений

ограничено.• Фиксится SPDY/HTTP2

Page 39: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

GPRS/Edge/LTE• Первые два просто медленные с

большим RTT• сами разбираются ретрансмитами

(см. HARQ), может страдать Latency• Ретрансмит внутри LTE выглядит для

TCP как самопроизвольное временное возрастание rtt. Будет ли лишний ретрансмит от TCP?

• Мелкий декларируемый application window у мобильников

Page 40: Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис Нагорнов (Яндекс)

QUIC• Сейчас революционного ничего нет.• Вытаскивает в user-space то, что

сейчас зашито в ядре– Можно сделать разную политику передачи в

зависимости от user agent.

• Если вы пишите приложение под iPhone/Android, то играться с протоколами можно прямо сейчас.