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

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

Upload: ontico

Post on 08-Jul-2015

286 views

Category:

Internet


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 2: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

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

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

Page 3: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

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

Page 4: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 5: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

Page 6: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

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

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

Лог  событий

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

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

Page 7: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

Page 8: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

изображение

куплено

на

http

://ru

.foto

lia.c

om

Page 9: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

Page 10: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

Page 11: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

Page 12: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

Page 13: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

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

Page 14: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

Page 15: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 16: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 17: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 18: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 19: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 20: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

Page 21: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

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

Page 22: Применение статистических методов и инструментов для анализа производительности систем, Алексей

Зачем нам это

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

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

Page 23: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

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

Page 24: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

Page 25: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

изображение

куплено

на

http

://ru

.foto

lia.c

om

Page 26: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 27: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

Page 28: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

Page 29: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

Page 30: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

http://graphite.wikidot.com/

Page 31: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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

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

Page 32: Применение статистических методов и инструментов для анализа производительности систем, Алексей

Визуализация• 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/

Page 33: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

Page 34: Применение статистических методов и инструментов для анализа производительности систем, Алексей

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

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

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