Monitoring and Load testing

75 %
25 %
Information about Monitoring and Load testing
Technology

Published on January 19, 2009

Author: fedor.malyshkin

Source: slideshare.net

Description

Демонстрация, разъясняющая вопросы мониторинга с помощью JMX. И проведение нагрузочного тестирования с использованием JMX технологии.

Мониторинг. Нагрузочное тестирование. [email_address] 2009.01.19

Мониторинг. Обоснование. Предварительные вопросы: Сколько времени CPU потребляет Ваше приложение? Сколько памяти операционной системы оно использует? Сколько объектов оно хранит в своём хранилище? Сколько пользователей в системе сейчас? Сколько раз вызывается тот или иной метод ( а так же каково его время выполнения ) ?

Предварительные вопросы:

Сколько времени CPU потребляет Ваше приложение?

Сколько памяти операционной системы оно использует?

Сколько объектов оно хранит в своём хранилище?

Сколько пользователей в системе сейчас?

Сколько раз вызывается тот или иной метод ( а так же каково его время выполнения ) ?

Мониторинг. Обоснование. Причём, все эти показатели в разрезе времени…

Причём, все эти показатели в разрезе времени…

Мониторинг. Обоснование. Если Вы не можете ответить на эти вопросы, то Вашему программному обеспечению нужны средства мониторинга.

Если Вы не можете ответить на эти вопросы, то Вашему программному обеспечению нужны средства мониторинга.

Мониторинг. JMX. JMX ( J ava M anagement e X tension) Расширение Java машины ( JVM ) для предоставления средств мониторинга и управления. Впервые появилась как часть JRE/JDK в Java 1.5 ( но можно использовать и в Java 1.4) Получила дальнейшее развитие в Java 6, Java 7…

JMX ( J ava M anagement e X tension)

Расширение Java машины ( JVM ) для предоставления средств мониторинга и управления.

Впервые появилась как часть JRE/JDK в Java 1.5 ( но можно использовать и в Java 1.4)

Получила дальнейшее развитие в Java 6, Java 7…

Мониторинг. JMX. Какую информацию JMX позволяет получать? Информацию о JMV (CPU, память, кол-во потоков, загруженные классы, Heap/Non Heap память, сборщик мусора и пр… ) Информацию специфичную для приложения, которое выполняется в JVM.

Какую информацию JMX позволяет получать?

Информацию о JMV (CPU, память, кол-во потоков, загруженные классы, Heap/Non Heap память, сборщик мусора и пр… )

Информацию специфичную для приложения, которое выполняется в JVM.

Мониторинг. JMX. Для получения представления о том, как информация, специфичная для приложения, может быть опубликована через JMX , необходим краткий экскурс в архитектуру.

Для получения представления о том, как информация, специфичная для приложения, может быть опубликована через JMX , необходим краткий экскурс в архитектуру.

Мониторинг. JMX.

Мониторинг. JConsole. В комплекте с JDK идёт стандартный клиент для мониторинга JMX данных – jconsole.

В комплекте с JDK идёт стандартный клиент для мониторинга JMX данных – jconsole.

Мониторинг. JConsole.

Мониторинг. JConsole.

Мониторинг. JConsole.

Мониторинг. Включение JMX. В Java 6 локальные соединения JMX активированы по-умолчанию. В Java 5 , для JVM необходимо передать параметр -Dcom.sun.management.jmxremote= true Для активации удалённых подключений (с других машин) (в обеих версиях): -Dcom.sun.management.jmxremote.port= ???? -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

В Java 6 локальные соединения JMX активированы по-умолчанию.

В Java 5 , для JVM необходимо передать параметр

-Dcom.sun.management.jmxremote= true

Для активации удалённых подключений (с других машин) (в обеих версиях):

-Dcom.sun.management.jmxremote.port= ????

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false

Мониторинг. MAGNET. Подсистема мониторинга MAGNET. Кое-кто уже использует одну из подсистем платформы. Подсистему журналирования. Подключается просто: <dependency> <groupId>ru.magnetosoft.magnet</groupId> <artifactId>magnet-subsystem-management</artifactId> <version>0.1-SNAPSHOT</version> </dependency>

Подсистема мониторинга MAGNET.

Кое-кто уже использует одну из подсистем платформы. Подсистему журналирования.

Подключается просто:

<dependency>

<groupId>ru.magnetosoft.magnet</groupId>

<artifactId>magnet-subsystem-management</artifactId>

<version>0.1-SNAPSHOT</version>

</dependency>

Мониторинг. MAGNET. Подсистема позволяет собирать статистику по состояниям системы, по действиям выполняемым в ней. Накапливать и хранить статистику. Возвращать её в запрошенные диапазоны времени. Кроме того, она содержит утилиты для преобразования данных в форматы, специфичные для JMX протокола (и обратно).

Подсистема позволяет собирать статистику по состояниям системы, по действиям выполняемым в ней.

Накапливать и хранить статистику.

Возвращать её в запрошенные диапазоны времени.

Кроме того, она содержит утилиты для преобразования данных в форматы, специфичные для JMX протокола (и обратно).

Нагрузочное тестирование. Обоснование. Симптомы необходимости внедрения нагрузочного тестирования: Через 3 месяца система начинает «деградировать». При пороге в 5 одновременных пользователей время ответа системы превышает 2 сек. Неожиданные ошибки конкурентного доступа. Зависание приложение системы при интенсивной работе. Непонятное потребление ресурсов при интенсивной работе или большом кол-ве пользователей.

Симптомы необходимости внедрения нагрузочного тестирования:

Через 3 месяца система начинает «деградировать».

При пороге в 5 одновременных пользователей время ответа системы превышает 2 сек.

Неожиданные ошибки конкурентного доступа.

Зависание приложение системы при интенсивной работе.

Непонятное потребление ресурсов при интенсивной работе или большом кол-ве пользователей.

Нагрузочное тестирование. Правило # 1. Нагрузочное тестирование – не однократная процедура.

Нагрузочное тестирование – не однократная процедура.

Нагрузочное тестирование. JMeter. JMeter - продукт для проведения нагрузочного тестирования. Особенности: Тестирование различных видов серверов: Web - HTTP, HTTPS SOAP /WS Database via JDBC LDAP Полностью портируем на все платформы (написан на Java ). Многопоточность обеспечивает конкурентные замеры различных функций и обеспечивает эмуляцию виртуальных пользователей ( VUser ). Offline анализ результатов замеров. Высокая конфигурируемость.

JMeter - продукт для проведения нагрузочного тестирования.

Особенности:

Тестирование различных видов серверов:

Web - HTTP, HTTPS

SOAP /WS

Database via JDBC

LDAP

Полностью портируем на все платформы (написан на Java ).

Многопоточность обеспечивает конкурентные замеры различных функций и обеспечивает эмуляцию виртуальных пользователей ( VUser ).

Offline анализ результатов замеров.

Высокая конфигурируемость.

Нагрузочное тестирование. JMeter. На текущий момент рассмотрим возможности JMeter в области тестирования веб-сервисов. После (возможно в другой презентации) – тестирование веб-приложений.

На текущий момент рассмотрим возможности JMeter в области тестирования веб-сервисов.

После (возможно в другой презентации) – тестирование веб-приложений.

Нагрузочное тестирование. JMeter. Основные компоненты JMeter: Sampler – генератор запросов Listener – анализатор результатов выполнения запросов Controller – контроль выполнения Sampler’ ов (циклы, условия, группы, время выполнения и прочее…)

Основные компоненты JMeter:

Sampler – генератор запросов

Listener – анализатор результатов выполнения запросов

Controller – контроль выполнения Sampler’ ов (циклы, условия, группы, время выполнения и прочее…)

Нагрузочное тестирование. JMeter.

Нагрузочное тестирование. Пример. Пример проведения нагрузочного тестирования будет продемонстрирован на модуле гетерогенного поиска ( HS ) .

Пример проведения нагрузочного тестирования будет продемонстрирован на модуле гетерогенного поиска ( HS ) .

Нагрузочное тестирование. Пример. Создаём под-проект по отношению к основному и размещаем код (код, скрипты, шаблоны) по тестированию в нём.

Создаём под-проект по отношению к основному и размещаем код (код, скрипты, шаблоны) по тестированию в нём.

Нагрузочное тестирование. Пример. Создаём заглушки модулей участников взаимодействия ( FM, EM, Dict ) . Они эмулируют поведение своих реальных собратьев, но выдают псевдо-данные, которые предназначены для создания заполнения основного модуля. Для тех, кто не в курсе модуль HS , производит первоначальное извлечение данных из всех остальных модулей (подвергая их предварительной обработке), после чего переходит в основной режим работы. Режим выполнения сложных поисковых запросов.

Создаём заглушки модулей участников взаимодействия ( FM, EM, Dict ) . Они эмулируют поведение своих реальных собратьев, но выдают псевдо-данные, которые предназначены для создания заполнения основного модуля.

Для тех, кто не в курсе модуль HS , производит первоначальное извлечение данных из всех остальных модулей (подвергая их предварительной обработке), после чего переходит в основной режим работы. Режим выполнения сложных поисковых запросов.

Нагрузочное тестирование. Пример. Создаём Ant ( http://ant.apache.org/ ) скрипт, который выполняет ВСЮ работы в автоматическом режиме.

Создаём Ant ( http://ant.apache.org/ ) скрипт, который выполняет ВСЮ работы в автоматическом режиме.

Нагрузочное тестирование. Пример. Извлекает из maven репозитария все необходимые артефакты, включая заархивированные версии tomcat’ а и jmeter. Это позволяет избежать предварительной настройки рабочих мест для проведения тестов. Распаковывает и конфигурирует извлечённые артефакты.

Извлекает из maven репозитария все необходимые артефакты, включая заархивированные версии tomcat’ а и jmeter. Это позволяет избежать предварительной настройки рабочих мест для проведения тестов.

Распаковывает и конфигурирует извлечённые артефакты.

Нагрузочное тестирование. Пример. Запускает все сконфигурированные артефакты в настроенном tomcat’ е (с активированной поддержкой JMX ). Ждёт старта и окончания предварительной синхронизации модулей. Запускает JMeter ( как ant задачу ) , передавая ему в качестве параметров конфигурационный файл, в котором указано, что и как тестировать, а так же куда записывать результаты и логи.

Запускает все сконфигурированные артефакты в настроенном tomcat’ е (с активированной поддержкой JMX ).

Ждёт старта и окончания предварительной синхронизации модулей.

Запускает JMeter ( как ant задачу ) , передавая ему в качестве параметров конфигурационный файл, в котором указано, что и как тестировать, а так же куда записывать результаты и логи.

Нагрузочное тестирование. Пример. JMeter начинает выполнять тестовые запросы в соответствии с конфигурационным файлом (который также имеет расширение “.jmx” ) . Одновременно при этом он снимает показатели с JVM и записывает их в указанный лог-файл ( XML формата).

JMeter начинает выполнять тестовые запросы в соответствии с конфигурационным файлом (который также имеет расширение “.jmx” ) . Одновременно при этом он снимает показатели с JVM и записывает их в указанный лог-файл ( XML формата).

Нагрузочное тестирование. Пример. После выполнения нагрузочных тестов сгенерированные XML файлы подвергаются специальной обработке, после которой создаются XML и HTML файлы содержащие суммарную статистику теста.

После выполнения нагрузочных тестов сгенерированные XML файлы подвергаются специальной обработке, после которой создаются XML и HTML файлы содержащие суммарную статистику теста.

Нагрузочное тестирование. Пример. <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <jmxJvmDataStatistics> <satistics> <recordsCount>32</recordsCount> <measurementStarted>2009-01-18T13:31:25.062+0300</measurementStarted> <measurementFinished>2009-01-18T13:32:06.046+0300</measurementFinished> <measurementTime>40984</measurementTime> <jvmUptimeAtMeasurementEnd>143843</jvmUptimeAtMeasurementEnd> </satistics> <maxStateData> <processCPUUsagePerCent>26.7159257449927</processCPUUsagePerCent> <commitedVirtualMemorySize>52539392</commitedVirtualMemorySize> <heapMemoryUsage>9091984</heapMemoryUsage> <nonHeapMemoryUsage>23645624</nonHeapMemoryUsage> <threadCount>26</threadCount> <freePhysicalMemorySize>143142912</freePhysicalMemorySize> <freeSwapSpaceSize>686731264</freeSwapSpaceSize> </maxStateData> <minStateData> <processCPUUsagePerCent>0.000000944645308465716</processCPUUsagePerCent> <commitedVirtualMemorySize>49008640</commitedVirtualMemorySize> <heapMemoryUsage>8109448</heapMemoryUsage> <nonHeapMemoryUsage>22115016</nonHeapMemoryUsage> <threadCount>26</threadCount> <freePhysicalMemorySize>136445952</freePhysicalMemorySize> <freeSwapSpaceSize>679084032</freeSwapSpaceSize> </minStateData> <avgStateData> <processCPUUsagePerCent>5.81998057718807</processCPUUsagePerCent> <commitedVirtualMemorySize>51784704</commitedVirtualMemorySize> <heapMemoryUsage>8590992</heapMemoryUsage> <nonHeapMemoryUsage>23369054.25</nonHeapMemoryUsage> <threadCount>26</threadCount> <freePhysicalMemorySize>137923072</freePhysicalMemorySize> <freeSwapSpaceSize>680529664</freeSwapSpaceSize> </avgStateData> </jmxJvmDataStatistics>

<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>

<jmxJvmDataStatistics>

<satistics>

<recordsCount>32</recordsCount>

<measurementStarted>2009-01-18T13:31:25.062+0300</measurementStarted>

<measurementFinished>2009-01-18T13:32:06.046+0300</measurementFinished>

<measurementTime>40984</measurementTime>

<jvmUptimeAtMeasurementEnd>143843</jvmUptimeAtMeasurementEnd>

</satistics>

<maxStateData>

<processCPUUsagePerCent>26.7159257449927</processCPUUsagePerCent>

<commitedVirtualMemorySize>52539392</commitedVirtualMemorySize>

<heapMemoryUsage>9091984</heapMemoryUsage>

<nonHeapMemoryUsage>23645624</nonHeapMemoryUsage>

<threadCount>26</threadCount>

<freePhysicalMemorySize>143142912</freePhysicalMemorySize>

<freeSwapSpaceSize>686731264</freeSwapSpaceSize>

</maxStateData>

<minStateData>

<processCPUUsagePerCent>0.000000944645308465716</processCPUUsagePerCent>

<commitedVirtualMemorySize>49008640</commitedVirtualMemorySize>

<heapMemoryUsage>8109448</heapMemoryUsage>

<nonHeapMemoryUsage>22115016</nonHeapMemoryUsage>

<threadCount>26</threadCount>

<freePhysicalMemorySize>136445952</freePhysicalMemorySize>

<freeSwapSpaceSize>679084032</freeSwapSpaceSize>

</minStateData>

<avgStateData>

<processCPUUsagePerCent>5.81998057718807</processCPUUsagePerCent>

<commitedVirtualMemorySize>51784704</commitedVirtualMemorySize>

<heapMemoryUsage>8590992</heapMemoryUsage>

<nonHeapMemoryUsage>23369054.25</nonHeapMemoryUsage>

<threadCount>26</threadCount>

<freePhysicalMemorySize>137923072</freePhysicalMemorySize>

<freeSwapSpaceSize>680529664</freeSwapSpaceSize>

</avgStateData>

</jmxJvmDataStatistics>

Нагрузочное тестирование. Пример.

Нагрузочное тестирование. Пример. После этого тот же ant скрипт запускает стандартные JUnit тесты, которые анализируют итоговые XML файлы (а могут и оригинальные) и принимают решение – прошёл тест или нет.

После этого тот же ant скрипт запускает стандартные JUnit тесты, которые анализируют итоговые XML файлы (а могут и оригинальные) и принимают решение – прошёл тест или нет.

Нагрузочное тестирование. Приведённые скрипт (и его модификации для других продуктов) должен находиться в CI сервер и отслеживать: не повлияли ли внесённые изменения на требуемые показатели производительности.

Приведённые скрипт (и его модификации для других продуктов) должен находиться в CI сервер и отслеживать: не повлияли ли внесённые изменения на требуемые показатели производительности.

Нагрузочное тестирование. При разработке данные скрипт (и его модификации) могут использоваться для автоматизации основных задач (конфигурирование, развёртывание). Запуск самого JMeter’ а можно проводит в ручную. Благодаря его богатому графическому интерфейсу процесс распределения нагрузки можно проследить более визуально.

При разработке данные скрипт (и его модификации) могут использоваться для автоматизации основных задач (конфигурирование, развёртывание).

Запуск самого JMeter’ а можно проводит в ручную. Благодаря его богатому графическому интерфейсу процесс распределения нагрузки можно проследить более визуально.

Add a comment

Related presentations

Related pages

Load Testing and Performance Monitoring | SOASTA

Beratung. Engagierte Experten helfen bei Leistungsstrategie, Testmethodik, Durchführung, Datenanalyse und mehr.
Read more

Availability-, bandwidth-monitoring and load-testing ...

Über uns. PRTG Network Monitor von Paessler ist eine preisgekrönte Lösung für leistungsfähiges, bezahlbares und benutzerfreundliches Unified Monitoring.
Read more

Neotys | Load Testing and Performance Monitoring Tools

Neotys' automated load testing and performance monitoring tools help you run Continuous Performance Validation on all your web & mobile applications
Read more

SNMP Monitoring Load Testing - Neotys

Load test and monitor your SNMP equipments and ensure their performance under stress.
Read more

Load testing | Dynatrace

Instantly scale your web or mobile load testing to a million concurrent users in the cloud with Dynatrace load testing tools.
Read more

Load Testing and Performance Monitoring | SOASTA

SOASTA's powerful load testing and performance monitoring solutions give you a crystal-clear view of the relationship between end-to-end performance, user ...
Read more

Reflective - Performance Monitoring and Load Testing Tools

Our load testing tools and performance monitoring software enable users to test the load time and monitor performance of their web based applications in ...
Read more

LoadView: Load Testing, Stress Testing, Performance Testing

On Demand Load Testing: Load test your website, web application, and API instantly!
Read more

Load Testing Server Monitoring Modules - Web Performance

Fault Tolerant. Load Testing has a tendency to break things, like servers and networks, and this is where our server monitoring agent really shines.
Read more

Load Testing Software | Dynatrace

Dynatrace load testing software, part of Dynatrace Synthetic Monitoring, is a complete load and performance testing solution for software and ...
Read more