Применение статистических методов и инструментов для...

Post on 08-Jul-2015

293 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Доклад Алексея Лавренюка с HighLoad++ 2014.

TRANSCRIPT

Анализ данных о производительности системАлексей Лавренюк, Яндекс

Предмет изучения• Система анализирует поток событий и ищет в нем важные

• Данные поступают пачками по несколько миллионов событий

• Пачки поступают регулярно, размеры пачек варьируются

• Нужно успевать обработать пачку, пока не пришла новая

изображение куплено на http://ru.fotolia.com

Что мы хотим знать• Запас производительности • Уметь сравнивать стенды и

релизы • Следить за трендами и замечать

нештатные ситуации Нам нужен градусник. Но не средняя температура по больнице!

изображение куплено на http://ru.fotolia.com

Стрельбы• Готовим тестовый стенд: танк и мишень • Собираем патронную ленту • Стреляем линейно возрастающей нагрузкой и смотрим, что происходит с системой

• Пакетная обработка логов событий: несколько миллионов событий в каждом

• История важна: нельзя сгенерировать синтетическую нагрузку заданного уровня. Можно только хитро умножить входную нагрузку на коэффициент.

Почему это может не работать

Что внутри• Три мастера, которые ставят задачки шестнадцати машинкам

• Лог — это табличка MySQL с событиями. Одна строка — одно событие

• Над каждым логом колдуют множество фильтров на разных машинках

• Фильтры зависят друг от друга и должны синхронизироваться

Знать про архитектуру — очень важно!

Лог  событий

Размеченный  лог

Накапливается  история

Огонь, вода и люди работаютСмотрим на приборы

изображение куплено на http://ru.fotolia.com

Бизнес-метрики• Число событий в каждом логе • Время обработки каждого лога • Время работы каждого фильтра • Время отставания и размер очереди

изображение

куплено

на

http

://ru

.foto

lia.c

om

Системные метрики• Загруженность процессора по ядрам • Процессор для важных процессов • Память: общие метрики и для важных процессов

• Диск, сеть и т.д. • Метрики MySQL

изображение куплено на http://ru.fotolia.com

Что можно увидеть• Резкие изменения метрик, например, изменение утилизации ресурсов и времен обработки логов во время экспериментов

• Следить за важными для бизнеса метриками, например, за отставанием или размером очереди

Как докопаться до сутиВыбор метрик и поиск зависимостей

изображение куплено на http://ru.fotolia.com

Графиков много. Очень много• Можно увидеть, что происходит прямо сейчас или что происходило в прошлом

• Но аномалии не видны сразу, а иногда не видны вообще

Независимые и зависимые• Размер входных логов, их число и характер содержимого — независимые метрики

• Утилизация процессора, памяти, время обработки одного лога — зависимые метрики

• Уменьшить число измерений!

изображение куплено на http://ru.fotolia.com

Ищем корреляции в метриках• Множество методов мультивариативного анализа

• Но у нас сработала интуиция и метод проб и ошибок: нам вообще важно только время обработки лога. От чего оно зависит?

Эврика!• Scatter plot • Время обработки зависит (только) от общего числа событий в логе • Линейность на основном участке и коэффициент пропорциональности

Большие логи• На больших логах наблюдается нелинейный рост времен обработки

Маленькие логи• Даже пустые логи обрабатываются за ненулевое время

Выбросы• Хочется понять, откуда они

Сравнение наблюдений• Две группы точек на одном графике: два периода или два стенда

Добавляем динамичностиВзрывы и вертолеты

изображение куплено на http://ru.fotolia.com

Временное измерение• Добавляем точки в реалтайме

• Прозрачность показывает «старение» точки

• Можно узнать, какая точка для какого лога

Интерактивные инструменты для работы с данными качественно изменяют процесс

Зачем нам это

• Back-to-back тесты • Сравнение теста и продакшна

Хотим кликнуть в выбросы и увидеть детали

Зависимости фильтров• Автоматическое построение и визуализация графа зависимостей

• Взвешивание графа на реальных данных и поиск критического пути

• Сбор статистики о частых критических путях

• Отображение критического пути для любой точки на графике

Критические пути• Критические пути зависят от входных данных

• Оптимизировать то, что лежит на критическом пути: паузы, времена ожидания и фильтры

• Чтобы оптимизировать, надо увидеть

Следим за трендамиАвтоматический анализ изменений

изображение

куплено

на

http

://ru

.foto

lia.c

om

Линейная регрессия• Метод наименьших квадратов • Шум влияет на результат • Сложно найти выбросы

Кластеризация• Много методов, мы выбрали

DBSCAN (density-based spatial clustering of applications with noise)

• Позволяет отсеять шум • И заодно выявляет выбросы • Наблюдаем за долгосрочными трендами

Как исследовать производительность• Нарисовать архитектурную схему • Научиться снимать метрики и смотреть на них

• Найти входные и выходные метрики • Найти корреляции между ними • Научиться анализировать конкретные точки

• Автоматизировать наблюдения изображение куплено на http://ru.fotolia.com

Гвозди и микроскопыЧто мы использовали в работе

изображение куплено на http://ru.fotolia.com

Метрики и графики• Diamond — инструмент для сбора системных метрик.

https://github.com/BrightcoveOS/Diamond • Graphite — сервер хранения и обработки временных рядов.

http://graphite.wikidot.com/

Анализ данных• SciPy — научный фреймворк для Python.

http://www.scipy.org/ • ipython notebook — интерактивный web-shell, в котором можно экспериментировать с вашими данными

• numpy, pandas — библиотеки для работы с данными • scikit-learn — библиотека машинного обучения (регрессия, кластеризация)

• networkX — библиотека для работы с графамиhttps://networkx.github.io/

Визуализация• Highcharts — хорошие графики из коробки. Бесплатно для некоммерческих проектов.http://www.highcharts.com/

• d3.js — библиотека для создания интерактивной визуализации.http://d3js.org/

• Rickshaw — библиотека для работы с графиками, поверх d3.jshttp://code.shutterstock.com/rickshaw/

• yEd — удобный редактор графовhttp://www.yworks.com/en/products/yfiles/yed/

Почитать• Data Analysis with Open Source Tools (By Philipp K. Janert)

Алексей Лавренюк

И да пребудет с вами Сила

twitter:  @direvius  community:  https://clubs.ya.ru/yandex-­‐tank  чатик:  https://gitter.im/yandex/yandex-­‐tank

top related