Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Анализ данных о 
производительности 
систем 
Алексей Лавренюк, Яндекс
Предмет изучения 
• Система анализирует поток 
событий и ищет в нем важные 
• Данные поступают пачками по 
несколько милли...
Что мы хотим знать 
• Запас производительности 
• Уметь сравнивать стенды и 
релизы 
• Следить за трендами и замечать 
неш...
Стрельбы 
• Готовим тестовый стенд: танк и мишень 
• Собираем патронную ленту 
• Стреляем линейно возрастающей нагрузкой и...
Почему это может не работать 
• Пакетная обработка логов событий: несколько миллионов событий в 
каждом 
• История важна: ...
Что внутри 
• Три мастера, которые ставят задачки 
шестнадцати машинкам 
• Лог — это табличка MySQL с 
событиями. Одна стр...
Огонь, вода и люди работают 
Смотрим на приборы 
изображение куплено на http://ru.fotolia.com
Бизнес-метрики 
• Число событий в каждом логе 
• Время обработки каждого лога 
• Время работы каждого фильтра 
• Время отс...
Системные метрики 
• Загруженность процессора по ядрам 
• Процессор для важных процессов 
• Память: общие метрики и для 
в...
Что можно увидеть 
• Резкие изменения метрик, 
например, изменение утилизации 
ресурсов и времен обработки 
логов во время...
Как докопаться до сути 
Выбор метрик и поиск зависимостей 
изображение куплено на http://ru.fotolia.com
Графиков много. Очень много 
• Можно увидеть, что происходит прямо 
сейчас или что происходило в прошлом 
• Но аномалии не...
Независимые и зависимые 
• Размер входных логов, их число и 
характер содержимого — независимые 
метрики 
• Утилизация про...
Ищем корреляции в метриках 
• Множество методов мультивариативного 
анализа 
• Но у нас сработала интуиция и метод проб и ...
Эврика! 
• Scatter plot 
• Время обработки зависит (только) от общего числа событий в логе 
• Линейность на основном участ...
Большие логи 
• На больших логах наблюдается нелинейный рост времен обработки
Маленькие логи 
• Даже пустые логи обрабатываются за ненулевое время
Выбросы 
• Хочется понять, откуда они
Сравнение наблюдений 
• Две группы точек на одном графике: два периода или два стенда
Добавляем динамичности 
Взрывы и вертолеты 
изображение куплено на http://ru.fotolia.com
Временное измерение 
• Добавляем точки в 
реалтайме 
• Прозрачность показывает 
«старение» точки 
• Можно узнать, какая то...
Зачем нам это 
• Back-to-back тесты 
• Сравнение теста и 
продакшна 
Хотим кликнуть в 
выбросы и увидеть 
детали
Зависимости фильтров 
• Автоматическое 
построение и визуализация 
графа зависимостей 
• Взвешивание графа на 
реальных да...
Критические пути 
• Критические пути зависят от 
входных данных 
• Оптимизировать то, что лежит на 
критическом пути: пауз...
Следим за трендами 
Автоматический анализ изменений 
изображение куплено на http://ru.fotolia.com
Линейная регрессия 
• Метод наименьших квадратов 
• Шум влияет на результат 
• Сложно найти выбросы
Кластеризация 
• Много методов, мы выбрали 
DBSCAN (density-based spatial 
clustering of applications with 
noise) 
• Позв...
Как исследовать 
производительность 
• Нарисовать архитектурную схему 
• Научиться снимать метрики и 
смотреть на них 
• Н...
Гвозди и микроскопы 
Что мы использовали в работе 
изображение куплено на http://ru.fotolia.com
Метрики и графики 
• Diamond — инструмент для сбора системных метрик. 
https://github.com/BrightcoveOS/Diamond 
• Graphite...
Анализ данных 
• SciPy — научный фреймворк для Python. 
http://www.scipy.org/ 
• ipython notebook — интерактивный web-shel...
Визуализация 
• Highcharts — хорошие графики из коробки. Бесплатно для 
некоммерческих проектов. 
http://www.highcharts.co...
Почитать 
• Data Analysis with Open Source Tools (By Philipp K. Janert)
Алексей Лавренюк 
twitter: @direvius 
community: https://clubs.ya.ru/yandex-­‐tank 
чатик: https://gitter.im/yandex/yandex...
Upcoming SlideShare
Loading in …5
×

Применение статистических методов и инструментов для анализа производительности систем, Алексей Лавренюк (Яндекс)

1,028 views

Published on

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

Published in: Internet
  • Be the first to comment

Применение статистических методов и инструментов для анализа производительности систем, Алексей Лавренюк (Яндекс)

  1. 1. Анализ данных о производительности систем Алексей Лавренюк, Яндекс
  2. 2. Предмет изучения • Система анализирует поток событий и ищет в нем важные • Данные поступают пачками по несколько миллионов событий • Пачки поступают регулярно, размеры пачек варьируются • Нужно успевать обработать пачку, пока не пришла новая изображение куплено на http://ru.fotolia.com
  3. 3. Что мы хотим знать • Запас производительности • Уметь сравнивать стенды и релизы • Следить за трендами и замечать нештатные ситуации Нам нужен градусник. Но не средняя температура по больнице! изображение куплено на http://ru.fotolia.com
  4. 4. Стрельбы • Готовим тестовый стенд: танк и мишень • Собираем патронную ленту • Стреляем линейно возрастающей нагрузкой и смотрим, что происходит с системой
  5. 5. Почему это может не работать • Пакетная обработка логов событий: несколько миллионов событий в каждом • История важна: нельзя сгенерировать синтетическую нагрузку заданного уровня. Можно только хитро умножить входную нагрузку на коэффициент.
  6. 6. Что внутри • Три мастера, которые ставят задачки шестнадцати машинкам • Лог — это табличка MySQL с событиями. Одна строка — одно событие • Над каждым логом колдуют множество фильтров на разных машинках • Фильтры зависят друг от друга и должны синхронизироваться Знать про архитектуру — очень важно! Лог событий Размеченный лог Накапливается история
  7. 7. Огонь, вода и люди работают Смотрим на приборы изображение куплено на http://ru.fotolia.com
  8. 8. Бизнес-метрики • Число событий в каждом логе • Время обработки каждого лога • Время работы каждого фильтра • Время отставания и размер очереди изображение куплено на http://ru.fotolia.com
  9. 9. Системные метрики • Загруженность процессора по ядрам • Процессор для важных процессов • Память: общие метрики и для важных процессов • Диск, сеть и т.д. • Метрики MySQL изображение куплено на http://ru.fotolia.com
  10. 10. Что можно увидеть • Резкие изменения метрик, например, изменение утилизации ресурсов и времен обработки логов во время экспериментов • Следить за важными для бизнеса метриками, например, за отставанием или размером очереди
  11. 11. Как докопаться до сути Выбор метрик и поиск зависимостей изображение куплено на http://ru.fotolia.com
  12. 12. Графиков много. Очень много • Можно увидеть, что происходит прямо сейчас или что происходило в прошлом • Но аномалии не видны сразу, а иногда не видны вообще
  13. 13. Независимые и зависимые • Размер входных логов, их число и характер содержимого — независимые метрики • Утилизация процессора, памяти, время обработки одного лога — зависимые метрики • Уменьшить число измерений! изображение куплено на http://ru.fotolia.com
  14. 14. Ищем корреляции в метриках • Множество методов мультивариативного анализа • Но у нас сработала интуиция и метод проб и ошибок: нам вообще важно только время обработки лога. От чего оно зависит?
  15. 15. Эврика! • Scatter plot • Время обработки зависит (только) от общего числа событий в логе • Линейность на основном участке и коэффициент пропорциональности
  16. 16. Большие логи • На больших логах наблюдается нелинейный рост времен обработки
  17. 17. Маленькие логи • Даже пустые логи обрабатываются за ненулевое время
  18. 18. Выбросы • Хочется понять, откуда они
  19. 19. Сравнение наблюдений • Две группы точек на одном графике: два периода или два стенда
  20. 20. Добавляем динамичности Взрывы и вертолеты изображение куплено на http://ru.fotolia.com
  21. 21. Временное измерение • Добавляем точки в реалтайме • Прозрачность показывает «старение» точки • Можно узнать, какая точка для какого лога Интерактивные инструменты для работы с данными качественно изменяют процесс
  22. 22. Зачем нам это • Back-to-back тесты • Сравнение теста и продакшна Хотим кликнуть в выбросы и увидеть детали
  23. 23. Зависимости фильтров • Автоматическое построение и визуализация графа зависимостей • Взвешивание графа на реальных данных и поиск критического пути • Сбор статистики о частых критических путях • Отображение критического пути для любой точки на графике
  24. 24. Критические пути • Критические пути зависят от входных данных • Оптимизировать то, что лежит на критическом пути: паузы, времена ожидания и фильтры • Чтобы оптимизировать, надо увидеть
  25. 25. Следим за трендами Автоматический анализ изменений изображение куплено на http://ru.fotolia.com
  26. 26. Линейная регрессия • Метод наименьших квадратов • Шум влияет на результат • Сложно найти выбросы
  27. 27. Кластеризация • Много методов, мы выбрали DBSCAN (density-based spatial clustering of applications with noise) • Позволяет отсеять шум • И заодно выявляет выбросы • Наблюдаем за долгосрочными трендами
  28. 28. Как исследовать производительность • Нарисовать архитектурную схему • Научиться снимать метрики и смотреть на них • Найти входные и выходные метрики • Найти корреляции между ними • Научиться анализировать конкретные точки • Автоматизировать наблюдения изображение куплено на http://ru.fotolia.com
  29. 29. Гвозди и микроскопы Что мы использовали в работе изображение куплено на http://ru.fotolia.com
  30. 30. Метрики и графики • Diamond — инструмент для сбора системных метрик. https://github.com/BrightcoveOS/Diamond • Graphite — сервер хранения и обработки временных рядов. http://graphite.wikidot.com/
  31. 31. Анализ данных • SciPy — научный фреймворк для Python. http://www.scipy.org/ • ipython notebook — интерактивный web-shell, в котором можно экспериментировать с вашими данными • numpy, pandas — библиотеки для работы с данными • scikit-learn — библиотека машинного обучения (регрессия, кластеризация) • networkX — библиотека для работы с графами https://networkx.github.io/
  32. 32. Визуализация • Highcharts — хорошие графики из коробки. Бесплатно для некоммерческих проектов. http://www.highcharts.com/ • d3.js — библиотека для создания интерактивной визуализации. http://d3js.org/ • Rickshaw — библиотека для работы с графиками, поверх d3.js http://code.shutterstock.com/rickshaw/ • yEd — удобный редактор графов http://www.yworks.com/en/products/yfiles/yed/
  33. 33. Почитать • Data Analysis with Open Source Tools (By Philipp K. Janert)
  34. 34. Алексей Лавренюк twitter: @direvius community: https://clubs.ya.ru/yandex-­‐tank чатик: https://gitter.im/yandex/yandex-­‐tank И да пребудет с вами Сила

×