35
Software quality assurance days 17 Международная конференция по вопросам качества ПО sqadays.com Минск. 29–30 мая 2015 Семерханов Илья T-Systems RUS. Санкт-Петербург. Россия Анализируем результаты перфоманс тестирования с Graphite и Grafana

Анализируем результаты тестирования производительности с Graphite и Grafana

  • Upload
    sqalab

  • View
    159

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Анализируем результаты тестирования производительности с Graphite и Grafana

Software quality assurance days17 Международная конференция по вопросам качества ПОsqadays.com

Минск. 29–30 мая 2015

Семерханов ИльяT-Systems RUS. Санкт-Петербург. Россия

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Page 2: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

О себе

https://www.linkedin.com/profile/view?id=110159845

Теперь CM \ DevOpsРаньше QA

https://www.facebook.com/ilya.semerhanov

Page 3: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Перфоманс тестирование. Еще раз?

o Много рассказывают как и чемпроводить тест

o Забывают рассказывать что и какделать дальше

Page 4: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Зачем нам перфоманс?

Производительность

Стрессоустойчивость

Максимальная нагрузка

Стабильность

Page 5: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Создаем нагрузку

Page 6: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Создаем модель нагрузки

o Определяем ключевые показатели эффективности (KPI)

o Выбираем профиль нагрузки

o Определяем необходимое количество нагрузки

Page 7: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Создаем тесты

Apache ab

Apache Jmeter

The Grinder

Selenium

SoapUI

Другое

Page 8: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Запускаем тесты и....анализируем…

Page 9: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Личный опыт

o Топ проект в Telekom Deutschland (T-Mobile)

o Миллионы пользователей по всей Германии

o UI + веб сервисы + сложная бизнес логика

o Сотни новых контрактов заключаются в минуту

o Сотни тысяч одновременных сессий ежеминутно

o Стек java технологий

Page 10: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Личный опыт. Проблемы

Перфоманс тесты проводились каждый релиз 2мя командами

Результаты хорошие

На продакшене все равно переодически проблемы

Недоверие заказчика к результатам тестов

Page 11: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Метрики. Клиент

Время отклика

Пропускная способность

Среднее время работы до отказа

Максимальная нагрузка

Измеряется инструментамиперфоманс тестирования

Page 12: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Метрики. Сервер

Загрузка CPU\JVM

Загрузка памяти

Время сбора мусора

Количество соединений с базой

Утекшие соединения

Количество сессий

Page 13: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Анализируем

Таблица и график в Excel

Встроенный отчет

Профайлер

Page 14: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

JRMC (JRockit Mission Control)

JVM аргументы: -Xmanagement:ssl=false,authenticate=false,port=8011,rmiserver_port=8011 -Djava.rmi.server.hostname=localhost

Page 15: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

JRMC (JRockit Mission Control)Что можно посмотреть:

oЗагрузка CPU на JVM

oЗагрузка памяти на JVM

oКоличество тредов

oВремя для GC

oСодержимое памяти

Page 16: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

JRMC (JRockit Mission Control)Что нельзя посмотреть:

oЗагрузка CPU на сервере

oЗагрузка памяти на сервере

oКоличество сессий

oКоличество подключений к базе данных

oСпецифичные для приложения метрики

oДинамику изменений

Page 17: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Хотим больше данных

Page 18: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Может нам поможет готовыйинструмент...

Например Grafana и Graphite?

Page 19: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Graphite

Масштабируемая система построения графиков в реальном времени.

Специализированная база данных для метрик + бекенд для их обработки + GUI

Page 20: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Grafana

Визуальный редактор и панель для отображения метрик для Graphite.

oНеограниченное количество панелей

oНабор фильтров

oРедактор запросов к Graphite

oКастомизация

oи многое другое

Page 21: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Graphite + Grafana

Page 22: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Graphite + Grafana

Page 23: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Graphite + Grafana

Page 24: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Компоненты

Graphite Webapp – GUI

Graphite Carbon – бекенд

Whisper – специализированная файловая база данных

Graphite API – REST API

Grafana – Rich GUI

Collectors – сборщики данных

Page 25: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Архитектура

Page 26: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Откуда брать данные

Операционная система

Сервера приложения через JMX (MBeans)

Приложение через JMX (Кастомные MBeans)

База данных

Page 27: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Пример коллектора

Отправлем метрику в Graphite

Page 28: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Пример коллектора

Page 29: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Создание графика в Grafana1. Создать dashboard

2. Создать панель

3. Выбрать метрики и нужные машины

4. Выбрать функции преобразования

5. Сохранить

Page 30: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Создание графика в Grafana

Page 31: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Функции, фильтры и трансформации

o averageSeries

o aggregateLine

o countSeries

o diffSeries

o highestAverage

o Integral

o timeShift

http://graphite.readthedocs.org/en/latest/functions.html

Page 32: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Сдвиг по времени

Page 33: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Graphite API

/render endpoint

# Большой графикhttp://graphite/render?target=server.web1.load&height=800&width=600

# Средняя нагрузка за 12 часовhttp://graphite/render?target=averageSeries(server.web*.load)&from=-12hours

# Выгрузка данных в jsonhttp://graphite/render?target=app.numUsers&format=json

Page 34: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Заключение

Анализировать надо данные не только на стороне клиента, но и на сервере

Grafana + Graphite – замена профайлерам при проведении перфоманс тестов

Графики в Grafana дают большие возможностей по анализу результатов тестирования

Graphite API удобный доступ к метрикам для отчетов

Test and have fun

Page 35: Анализируем результаты тестирования производительности с Graphite и Grafana

Анализируем результаты перфоманс тестирования с Graphite и Grafana

Спасибо за внимание

https://www.linkedin.com/profile/view?id=110159845

https://www.facebook.com/ilya.semerhanov