В сутки Яндекс.Диск отдает более 40 миллионов сгенерированных превью изображений для просмотра в веб-интерфейсе Диска и в мобильных приложениях.
В докладе будет рассказано о поиске узких мест в цепочке от запроса пользователя до показа ему картинки, создания мониторингов скорости показа картинок, мерах по оптимизации: какие варианты рассматривали, какие реализовали, и какие были итоги.
9. Стадии загрузки и показа
DNS+TCP SSL request response delay before showdelay before request
10. Оптимизации
• Задержки на клиенте
• Генерация превью
• Доставка
Что из этого вносит
наибольший вклад в общее
время?
11. Измерения на клиенте
Запрос списка Рендеринг сетки Загрузка всех картинок в порции
Фотоньки Фотоньки Фотоньки
12. Измерения на клиенте – 2
Для отдельной картинки
– время установки ssl
соединения
– время собственно загрузки
Resource Timing API*
* Помним о Timing-Allow-Origin
14. До: время показа порции
3,200 мс
800 мс
200 мс
Время
Рендер
Листинг
Загрузка
порции
15. Генерация превью
• Проверка валидности ссылки
• Проверка доступов
• Получение большого превью
из хранилища
• Собственно генерация
16. Генерация превью
• Было:
• Генерация на машинах,
обрабатывающих добавляемые
файлы
• Кэш в рамках одной машины
• Стало:
• Отдельный кластер для генерации
• Кэш в рамках ДЦ
26. До и после
3,200 мс
1,800 мс
800 мс
1,230 мс
200 мс
220 мс
До После
РендерЛистинг
Загрузка
порции
27. Выводы и рекомендации
• Перед началом
оптимизации необходимо
получить полную картину
• Разные сервисы нужно
изолировать по ресурсам
• Для SPDY нужна служба
поддержки :)
• После каждой оптимизации
нужно заново
профилировать