Top Banner
NoBigData: потоковая система аналитики ClientSide- производительности в реальном времени Сергей Рыжиков, Александр Сербул
57

NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Jul 07, 2015

Download

Internet

Ontico

Доклад Сергея Рыжикова и Александра Сербула на HighLoad++ 2014.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

NoBigData: потоковая система

аналитики ClientSide-

производительности в

реальном времени

Сергей Рыжиков,

Александр Сербул

Page 2: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Скорость сайта

Page 3: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Какой сайт считается быстрым?

Быстро генерируется, минимальное число запросов…

Есть только один критерий с

точки зрения клиента -

насколько быстро

отображается сайт.

Page 4: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Скорость – это фича

• Человек замечает: 100–

200 мс

• «Тормознутость»: >300

мс

• Переключение

внимания: >1000 мс

Page 5: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

HTML

JS

CSS

Графика

Динамика загрузки страниц

Page 6: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Производительность и скорость проекта.

Наши технологии:

• Технология кеширования:

автокеширование, html-

кеширование;

• Сжатие и объединение css и js;

• Композитный сайт;

• Инструменты отладки;

• Монитор производительности;

• Ускорение сайтов – CDN;

• Инспектор сайта.

Page 7: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Три точки мониторинга

Page 8: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

У людей сайт отображается иначе

Page 9: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Посетители сайта

Page 10: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Page 11: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Page 12: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Page 13: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Page 14: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Page 15: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

• 21 273 сайтов

• 84 879 доменов

• 52 млн хитов/сутки

• 43 млн уникальных посетителей

Аудитория Рунета - 68,7 млн человек

Скорость сайтов на «1С-Битрикс»

Источник: Фонд «Общественное мнение», апрель 2014

Page 16: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

22%

48%

20%

6%

4%

Очень быстро

Быстро

Не быстро

Медленно

Очень медленно

Скорость сайтов на «1С-Битрикс»

Page 17: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

«Все, что можно наблюдать и измерить, можно

улучшить»

Боб Парсонс, основатель GoDaddy.

«Все, что можно наблюдать и измерить, обязательно начинает улучшаться»

Page 18: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

На примере одного из проектов

Медленно (1,95 сек.)

Page 19: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

На примере одного из проектов

1. Переезд на хостинг в Россию

Не быстро (1,45 сек.)

Page 20: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

На примере одного из проектов

Не быстро (1,05 сек.)

1. Переезд на хостинг в Россию

2. Сжатие CSS и JS

Page 21: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

На примере одного из проектов

Быстро (0,75 сек.)

1. Переезд на хостинг в Россию

2. Сжатие CSS и JS

3. Переход на стандартные компоненты

Page 22: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

На примере одного из проектов

Очень быстро (0,35 сек.)

1. Переезд на хостинг в Россию

2. Сжатие CSS и JS

3. Переход на стандартные компоненты

4. Включение композитного режима

Page 23: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Технология «Композитный сайт» дает самый

большой прирост скорости отображения сайта

Page 24: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Традиционный подход…

• Серверный мониторинг «скоростей»:

- Nagios/munin

- Zabbix/Cacti

- Распределенный мониторинг

- Функциональное тестирование

Page 25: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

«Серверный» мониторинг

Page 26: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

«Серверный» мониторинг - нагрузка

Page 27: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

«Серверный» мониторинг - память

Page 28: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

«Серверный» мониторинг - swap

Page 29: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

«Серверный» мониторинг – админочки,

гистограмочки

Page 30: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

«Серверный» мониторинг – Pinba

Page 31: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Нужно быть очень умным…• Анализировать графики

• Написать много скриптов

• Обложить систему тестами

• Научиться «трактовать»

цифры

• Тренироваться

Page 32: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Page 33: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

А сайт продолжает тормозить…

• Последняя миля

• Wi-Fi / 4G / LTE - задержки

• Torrent-клиенты

• Сосед играет в “World Of Tanks”

• Тормозит браузер/компьютер

• «Тяжелый» javascript

Page 34: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Page 35: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Navigation Timing API

Page 36: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Соберем и проанализируем?

• Собираем метрики в JS браузера и

отправляем

• От 500-1500 запросов на вставку в секунду

• Гистограмма распределения, онлайн

• Последние N-хитов

• Понятный «Индекс» скорости сайта

• Очистка устаревших данных

Page 37: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Архитектура «потоковых» обработчиков

• «Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)

Page 38: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Обработка информационных

потоков• Hashing, randomizing

• «Тервер» – я тебя люблю и помню

• Bloom-filtering, Flajolet-Martin …

• «Базки нету»

• Памяти мало

Page 39: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Page 40: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Готовый «кубик» - Amazon Kinesis

• 1 shard: <=1000 вставок/сек, <=1МБ/сек

• <50 КБ в пакете

• Чтение: <=5 чтений/сек, <=2МБ/сек

• Хранение данных потока - до суток

• 1,000,000 вставок - $0.033

• 1 shard/час - $0.017

• Всего: ~50$/мес за 1 shard

Page 41: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Как «лить» в Kinesis?

• Авторизация в Amazon Web Services, v.4

• POST

• Неблокирующие сокеты

• nginx?

• Модуль для nginx?

• Где ставить cookies?

Page 42: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Nginx + Lua – просто и быстро

• Lua nginx module

• «Почти» javascript

• Неблокирующие сокеты

• Реализация – 2 дня

Page 43: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Nginx + Lua – просто и быстро

Page 44: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Kinesis – статистика обработки

Page 45: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Обработчики «потока»

Page 46: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Обработчики «потока»

• 8 workers, PHP

• 1 «чистильщик», PHP, SQS

Page 47: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Агрегация, гистограммы

• NoSQL – DynamoDB

• 1000 последних хитов (индекс)

• Профили пользователей

• Гистограмма, индекс скорости сайта

• История хитов

• Очистка: SQS, эвристика

Page 48: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Модель данных

Page 49: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

«Льем» данные в DynamoDB

Page 50: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Производительность, задержки

Page 51: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Агрегация в online

• Окно – 1000 хитов

• Всего: ~80 млн.

• Выборка –

по индексу

• Чтение – PK

• No ad-hoc

• Очистка –

эвристика

с SQS

Page 52: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Автоскейлинг DynamoDB

• Пишем сами

Page 53: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Затраты на DynamoDB

• Запись в мес: ~ $400 (максимум)

• Место: $0.283/GB * 27 = ~$7

• Чтения в мес: ~ $10 (максимум)

Автоскейлинг – снижение расходов в 2-4 раза.

Увеличение мощности – 1-2 минуты.

Page 54: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Упрощенная схема

Page 55: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

• 21 273 сайтов

• 84 879 доменов

• 52 млн хитов/сутки

• 43 млн уникальных посетителей

Аудитория Рунета - 68,7 млн человек

Скорость сайтов на «1С-Битрикс»

Источник: Фонд «Общественное мнение», апрель 2014

Page 56: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Затраты

• Проектирование и реализация – три недели,

~$1000

• Эксплуатация (в мес):

- Kinesis: ~ $50-100

- DynamoDB: ~ $200

- Серверы с workers и nginx/Lua: ~$200

Итого: ~$500 в мес (+ трафик $100-200)

Page 57: NoBigData - потоковая система аналитики clientside производительности, Сергей Рыжиков, Александр Сербул (1С-Битрикс)

Сергей Рыжиков

@rsv_bitrix

Спасибо за внимание!

Вопросы?

Александр Сербул

@AlexSerbul