Upload
ontico
View
317
Download
1
Embed Size (px)
DESCRIPTION
Доклад Сергея Рыжикова и Александра Сербула на HighLoad++ 2014.
Citation preview
NoBigData: потоковая система
аналитики ClientSide-
производительности в
реальном времени
Сергей Рыжиков,
Александр Сербул
Скорость сайта
Какой сайт считается быстрым?
Быстро генерируется, минимальное число запросов…
Есть только один критерий с
точки зрения клиента -
насколько быстро
отображается сайт.
Скорость – это фича
• Человек замечает: 100–
200 мс
• «Тормознутость»: >300
мс
• Переключение
внимания: >1000 мс
HTML
JS
CSS
Графика
Динамика загрузки страниц
Производительность и скорость проекта.
Наши технологии:
• Технология кеширования:
автокеширование, html-
кеширование;
• Сжатие и объединение css и js;
• Композитный сайт;
• Инструменты отладки;
• Монитор производительности;
• Ускорение сайтов – CDN;
• Инспектор сайта.
Три точки мониторинга
У людей сайт отображается иначе
Посетители сайта
• 21 273 сайтов
• 84 879 доменов
• 52 млн хитов/сутки
• 43 млн уникальных посетителей
Аудитория Рунета - 68,7 млн человек
Скорость сайтов на «1С-Битрикс»
Источник: Фонд «Общественное мнение», апрель 2014
22%
48%
20%
6%
4%
Очень быстро
Быстро
Не быстро
Медленно
Очень медленно
Скорость сайтов на «1С-Битрикс»
«Все, что можно наблюдать и измерить, можно
улучшить»
Боб Парсонс, основатель GoDaddy.
«Все, что можно наблюдать и измерить, обязательно начинает улучшаться»
На примере одного из проектов
Медленно (1,95 сек.)
На примере одного из проектов
1. Переезд на хостинг в Россию
Не быстро (1,45 сек.)
На примере одного из проектов
Не быстро (1,05 сек.)
1. Переезд на хостинг в Россию
2. Сжатие CSS и JS
На примере одного из проектов
Быстро (0,75 сек.)
1. Переезд на хостинг в Россию
2. Сжатие CSS и JS
3. Переход на стандартные компоненты
На примере одного из проектов
Очень быстро (0,35 сек.)
1. Переезд на хостинг в Россию
2. Сжатие CSS и JS
3. Переход на стандартные компоненты
4. Включение композитного режима
Технология «Композитный сайт» дает самый
большой прирост скорости отображения сайта
Традиционный подход…
• Серверный мониторинг «скоростей»:
- Nagios/munin
- Zabbix/Cacti
- Распределенный мониторинг
- Функциональное тестирование
«Серверный» мониторинг
«Серверный» мониторинг - нагрузка
«Серверный» мониторинг - память
«Серверный» мониторинг - swap
«Серверный» мониторинг – админочки,
гистограмочки
«Серверный» мониторинг – Pinba
Нужно быть очень умным…• Анализировать графики
• Написать много скриптов
• Обложить систему тестами
• Научиться «трактовать»
цифры
• Тренироваться
А сайт продолжает тормозить…
• Последняя миля
• Wi-Fi / 4G / LTE - задержки
• Torrent-клиенты
• Сосед играет в “World Of Tanks”
• Тормозит браузер/компьютер
• «Тяжелый» javascript
Navigation Timing API
Соберем и проанализируем?
• Собираем метрики в JS браузера и
отправляем
• От 500-1500 запросов на вставку в секунду
• Гистограмма распределения, онлайн
• Последние N-хитов
• Понятный «Индекс» скорости сайта
• Очистка устаревших данных
Архитектура «потоковых» обработчиков
• «Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)
Обработка информационных
потоков• Hashing, randomizing
• «Тервер» – я тебя люблю и помню
• Bloom-filtering, Flajolet-Martin …
• «Базки нету»
• Памяти мало
Готовый «кубик» - Amazon Kinesis
• 1 shard: <=1000 вставок/сек, <=1МБ/сек
• <50 КБ в пакете
• Чтение: <=5 чтений/сек, <=2МБ/сек
• Хранение данных потока - до суток
• 1,000,000 вставок - $0.033
• 1 shard/час - $0.017
• Всего: ~50$/мес за 1 shard
Как «лить» в Kinesis?
• Авторизация в Amazon Web Services, v.4
• POST
• Неблокирующие сокеты
• nginx?
• Модуль для nginx?
• Где ставить cookies?
Nginx + Lua – просто и быстро
• Lua nginx module
• «Почти» javascript
• Неблокирующие сокеты
• Реализация – 2 дня
Nginx + Lua – просто и быстро
Kinesis – статистика обработки
Обработчики «потока»
Обработчики «потока»
• 8 workers, PHP
• 1 «чистильщик», PHP, SQS
Агрегация, гистограммы
• NoSQL – DynamoDB
• 1000 последних хитов (индекс)
• Профили пользователей
• Гистограмма, индекс скорости сайта
• История хитов
• Очистка: SQS, эвристика
Модель данных
«Льем» данные в DynamoDB
Производительность, задержки
Агрегация в online
• Окно – 1000 хитов
• Всего: ~80 млн.
• Выборка –
по индексу
• Чтение – PK
• No ad-hoc
• Очистка –
эвристика
с SQS
Автоскейлинг DynamoDB
• Пишем сами
Затраты на DynamoDB
• Запись в мес: ~ $400 (максимум)
• Место: $0.283/GB * 27 = ~$7
• Чтения в мес: ~ $10 (максимум)
Автоскейлинг – снижение расходов в 2-4 раза.
Увеличение мощности – 1-2 минуты.
Упрощенная схема
• 21 273 сайтов
• 84 879 доменов
• 52 млн хитов/сутки
• 43 млн уникальных посетителей
Аудитория Рунета - 68,7 млн человек
Скорость сайтов на «1С-Битрикс»
Источник: Фонд «Общественное мнение», апрель 2014
Затраты
• Проектирование и реализация – три недели,
~$1000
• Эксплуатация (в мес):
- Kinesis: ~ $50-100
- DynamoDB: ~ $200
- Серверы с workers и nginx/Lua: ~$200
Итого: ~$500 в мес (+ трафик $100-200)
Сергей Рыжиков
@rsv_bitrix
Спасибо за внимание!
Вопросы?
Александр Сербул
@AlexSerbul