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

Post on 07-Jul-2015

317 Views

Category:

Internet

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Доклад Сергея Рыжикова и Александра Сербула на HighLoad++ 2014.

Transcript

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

top related