Ускорение генерации
превью в
Яндекс.Диске
Сергей Нечаев
Что может быть хуже?
Те самые фотоньки
Как все работает
Фотоньки
Файлов в сутки
25.5M
15.2M
47.2M
загружается всего
загружается изображений
запросов превью
Статические превью
+ Нет расходов
на генерацию
Динамические превью
? мс
Стадии загрузки и показа
DNS+TCP SSL request response delay before showdelay before request
Оптимизации
• Задержки на клиенте
• Генерация превью
• Доставка
Что из этого вносит
наибольший вклад в общее
время?
Измерения на клиенте
Запрос списка Рендеринг сетки Загрузка всех картинок в порции
Фотоньки Фотоньки Фотоньки
Измерения на клиенте – 2
Для отдельной картинки
– время установки ssl
соединения
– время собственно загрузки
Resource Timing API*
* Помним о Timing-Allow-Origin
Время показа превью
Запрос листинга
Получение порции превью
Рендеринг
сетки
До: время показа порции
3,200 мс
800 мс
200 мс
Время
Рендер
Листинг
Загрузка
порции
Генерация превью
• Проверка валидности ссылки
• Проверка доступов
• Получение большого превью
из хранилища
• Собственно генерация
Генерация превью
• Было:
• Генерация на машинах,
обрабатывающих добавляемые
файлы
• Кэш в рамках одной машины
• Стало:
• Отдельный кластер для генерации
• Кэш в рамках ДЦ
Время на сервере
Время для пользователя
Запрос листинга
Получение порции превью
Рендеринг
сетки
Оптимизация доставки
Уменьшить размер: jpeg quality
95% 92%
124КB 62KB
SPDY
Внедрили
SPDY для >24 картинок
1.5
2.6
3.7
8.0
1.5
2.3
3.2
6.8
25% 50% 75% 95%
Время отдачи порции в секундах
SPDY и антивирусы
Фотоньки
Антивирус
X
Предзапросы превью
Сгенерируй превью
Отдай превью
Клиент Сервер
Склеивать картинки
Дай пачку превью
Клиент Сервер
Качество по запросу
Дай превью
Клиент Сервер
Дай превью получше
До и после
3,200 мс
1,800 мс
800 мс
1,230 мс
200 мс
220 мс
До После
РендерЛистинг
Загрузка
порции
Выводы и рекомендации
• Перед началом
оптимизации необходимо
получить полную картину
• Разные сервисы нужно
изолировать по ресурсам
• Для SPDY нужна служба
поддержки :)
• После каждой оптимизации
нужно заново
профилировать
Сергей Нечаев
Менеджер технических проектов
Яндекс.Диска
@spnechaev

Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)