Применение статистических методов и инструментов для...
description
Transcript of Применение статистических методов и инструментов для...
![Page 1: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/1.jpg)
Анализ данных о производительности системАлексей Лавренюк, Яндекс
![Page 2: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/2.jpg)
Предмет изучения• Система анализирует поток событий и ищет в нем важные
• Данные поступают пачками по несколько миллионов событий
• Пачки поступают регулярно, размеры пачек варьируются
• Нужно успевать обработать пачку, пока не пришла новая
изображение куплено на http://ru.fotolia.com
![Page 3: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/3.jpg)
Что мы хотим знать• Запас производительности • Уметь сравнивать стенды и
релизы • Следить за трендами и замечать
нештатные ситуации Нам нужен градусник. Но не средняя температура по больнице!
изображение куплено на http://ru.fotolia.com
![Page 4: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/4.jpg)
Стрельбы• Готовим тестовый стенд: танк и мишень • Собираем патронную ленту • Стреляем линейно возрастающей нагрузкой и смотрим, что происходит с системой
![Page 5: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/5.jpg)
• Пакетная обработка логов событий: несколько миллионов событий в каждом
• История важна: нельзя сгенерировать синтетическую нагрузку заданного уровня. Можно только хитро умножить входную нагрузку на коэффициент.
Почему это может не работать
![Page 6: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/6.jpg)
Что внутри• Три мастера, которые ставят задачки шестнадцати машинкам
• Лог — это табличка MySQL с событиями. Одна строка — одно событие
• Над каждым логом колдуют множество фильтров на разных машинках
• Фильтры зависят друг от друга и должны синхронизироваться
Знать про архитектуру — очень важно!
Лог событий
Размеченный лог
Накапливается история
![Page 7: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/7.jpg)
Огонь, вода и люди работаютСмотрим на приборы
изображение куплено на http://ru.fotolia.com
![Page 8: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/8.jpg)
Бизнес-метрики• Число событий в каждом логе • Время обработки каждого лога • Время работы каждого фильтра • Время отставания и размер очереди
изображение
куплено
на
http
://ru
.foto
lia.c
om
![Page 9: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/9.jpg)
Системные метрики• Загруженность процессора по ядрам • Процессор для важных процессов • Память: общие метрики и для важных процессов
• Диск, сеть и т.д. • Метрики MySQL
изображение куплено на http://ru.fotolia.com
![Page 10: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/10.jpg)
Что можно увидеть• Резкие изменения метрик, например, изменение утилизации ресурсов и времен обработки логов во время экспериментов
• Следить за важными для бизнеса метриками, например, за отставанием или размером очереди
![Page 11: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/11.jpg)
Как докопаться до сутиВыбор метрик и поиск зависимостей
изображение куплено на http://ru.fotolia.com
![Page 12: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/12.jpg)
Графиков много. Очень много• Можно увидеть, что происходит прямо сейчас или что происходило в прошлом
• Но аномалии не видны сразу, а иногда не видны вообще
![Page 13: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/13.jpg)
Независимые и зависимые• Размер входных логов, их число и характер содержимого — независимые метрики
• Утилизация процессора, памяти, время обработки одного лога — зависимые метрики
• Уменьшить число измерений!
изображение куплено на http://ru.fotolia.com
![Page 14: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/14.jpg)
Ищем корреляции в метриках• Множество методов мультивариативного анализа
• Но у нас сработала интуиция и метод проб и ошибок: нам вообще важно только время обработки лога. От чего оно зависит?
![Page 15: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/15.jpg)
Эврика!• Scatter plot • Время обработки зависит (только) от общего числа событий в логе • Линейность на основном участке и коэффициент пропорциональности
![Page 16: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/16.jpg)
Большие логи• На больших логах наблюдается нелинейный рост времен обработки
![Page 17: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/17.jpg)
Маленькие логи• Даже пустые логи обрабатываются за ненулевое время
![Page 18: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/18.jpg)
Выбросы• Хочется понять, откуда они
![Page 19: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/19.jpg)
Сравнение наблюдений• Две группы точек на одном графике: два периода или два стенда
![Page 20: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/20.jpg)
Добавляем динамичностиВзрывы и вертолеты
изображение куплено на http://ru.fotolia.com
![Page 21: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/21.jpg)
Временное измерение• Добавляем точки в реалтайме
• Прозрачность показывает «старение» точки
• Можно узнать, какая точка для какого лога
Интерактивные инструменты для работы с данными качественно изменяют процесс
![Page 22: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/22.jpg)
Зачем нам это
• Back-to-back тесты • Сравнение теста и продакшна
Хотим кликнуть в выбросы и увидеть детали
![Page 23: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/23.jpg)
Зависимости фильтров• Автоматическое построение и визуализация графа зависимостей
• Взвешивание графа на реальных данных и поиск критического пути
• Сбор статистики о частых критических путях
• Отображение критического пути для любой точки на графике
![Page 24: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/24.jpg)
Критические пути• Критические пути зависят от входных данных
• Оптимизировать то, что лежит на критическом пути: паузы, времена ожидания и фильтры
• Чтобы оптимизировать, надо увидеть
![Page 25: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/25.jpg)
Следим за трендамиАвтоматический анализ изменений
изображение
куплено
на
http
://ru
.foto
lia.c
om
![Page 26: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/26.jpg)
Линейная регрессия• Метод наименьших квадратов • Шум влияет на результат • Сложно найти выбросы
![Page 27: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/27.jpg)
Кластеризация• Много методов, мы выбрали
DBSCAN (density-based spatial clustering of applications with noise)
• Позволяет отсеять шум • И заодно выявляет выбросы • Наблюдаем за долгосрочными трендами
![Page 28: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/28.jpg)
Как исследовать производительность• Нарисовать архитектурную схему • Научиться снимать метрики и смотреть на них
• Найти входные и выходные метрики • Найти корреляции между ними • Научиться анализировать конкретные точки
• Автоматизировать наблюдения изображение куплено на http://ru.fotolia.com
![Page 29: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/29.jpg)
Гвозди и микроскопыЧто мы использовали в работе
изображение куплено на http://ru.fotolia.com
![Page 30: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/30.jpg)
Метрики и графики• Diamond — инструмент для сбора системных метрик.
https://github.com/BrightcoveOS/Diamond • Graphite — сервер хранения и обработки временных рядов.
http://graphite.wikidot.com/
![Page 31: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/31.jpg)
Анализ данных• SciPy — научный фреймворк для Python.
http://www.scipy.org/ • ipython notebook — интерактивный web-shell, в котором можно экспериментировать с вашими данными
• numpy, pandas — библиотеки для работы с данными • scikit-learn — библиотека машинного обучения (регрессия, кластеризация)
• networkX — библиотека для работы с графамиhttps://networkx.github.io/
![Page 32: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/32.jpg)
Визуализация• 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: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/33.jpg)
Почитать• Data Analysis with Open Source Tools (By Philipp K. Janert)
![Page 34: Применение статистических методов и инструментов для анализа производительности систем, Алексей](https://reader034.fdocument.pub/reader034/viewer/2022052623/559c1d131a28abd9298b456d/html5/thumbnails/34.jpg)
Алексей Лавренюк
И да пребудет с вами Сила
twitter: @direvius community: https://clubs.ya.ru/yandex-‐tank чатик: https://gitter.im/yandex/yandex-‐tank