Анализируем результаты тестирования...

Post on 25-Jul-2015

159 views 4 download

Transcript of Анализируем результаты тестирования...

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

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

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

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

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

О себе

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Apache ab

Apache Jmeter

The Grinder

Selenium

SoapUI

Другое

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

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

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

Личный опыт

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Загрузка CPU\JVM

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

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

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

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

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

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

Анализируем

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

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

Профайлер

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

JRMC (JRockit Mission Control)

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

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

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

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

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

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

oВремя для GC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Graphite

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

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

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

Grafana

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

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

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

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

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

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

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

Graphite + Grafana

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

Graphite + Grafana

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

Graphite + Grafana

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

Компоненты

Graphite Webapp – GUI

Graphite Carbon – бекенд

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

Graphite API – REST API

Grafana – Rich GUI

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

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

Архитектура

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

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

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

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

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

База данных

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

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

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

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

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

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

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

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

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

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

5. Сохранить

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

Создание графика в 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

Анализируем результаты перфоманс тестирования с 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

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

Заключение

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

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

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

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

Test and have fun

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

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

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

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