Your SlideShare is downloading. ×
0
Мониторинг. Нагрузочное тестирование. [email_address] 2009.01.19
Мониторинг. Обоснование. <ul><li>Предварительные вопросы: </li></ul><ul><ul><li>Сколько времени  CPU  потребляет Ваше прил...
Мониторинг. Обоснование. <ul><li>Причём, все эти показатели в разрезе времени… </li></ul>
Мониторинг. Обоснование. <ul><li>Если Вы не можете ответить на эти вопросы, то Вашему программному обеспечению нужны средс...
Мониторинг.  JMX. <ul><li>JMX ( J ava  M anagement e X tension) </li></ul><ul><li>Расширение  Java  машины ( JVM )   для п...
Мониторинг.  JMX. <ul><li>Какую информацию  JMX  позволяет получать? </li></ul><ul><ul><li>Информацию о  JMV (CPU,  память...
Мониторинг.  JMX. <ul><li>Для получения представления о том, как информация, специфичная для приложения, может быть опубли...
Мониторинг.  JMX.
Мониторинг.  JConsole. <ul><li>В комплекте с  JDK  идёт стандартный клиент для мониторинга  JMX  данных –  jconsole. </li>...
Мониторинг.  JConsole.
Мониторинг.  JConsole.
Мониторинг.  JConsole.
Мониторинг. Включение  JMX. <ul><li>В  Java 6  локальные соединения  JMX  активированы по-умолчанию. </li></ul><ul><li>В  ...
Мониторинг.  MAGNET. <ul><li>Подсистема мониторинга  MAGNET. </li></ul><ul><li>Кое-кто уже использует одну из подсистем пл...
Мониторинг.  MAGNET. <ul><li>Подсистема позволяет собирать статистику по состояниям системы, по действиям выполняемым в не...
Нагрузочное тестирование.   Обоснование. <ul><li>Симптомы необходимости внедрения нагрузочного тестирования: </li></ul><ul...
Нагрузочное тестирование.   Правило  # 1. <ul><li>Нагрузочное тестирование – не однократная процедура. </li></ul>
Нагрузочное тестирование.  JMeter. <ul><li>JMeter -  продукт для проведения нагрузочного тестирования. </li></ul><ul><li>О...
Нагрузочное тестирование.  JMeter. <ul><li>На текущий момент рассмотрим возможности  JMeter  в области тестирования веб-се...
Нагрузочное тестирование.  JMeter. <ul><li>Основные компоненты  JMeter: </li></ul><ul><ul><li>Sampler –  генератор запросо...
Нагрузочное тестирование.  JMeter.
Нагрузочное тестирование. Пример. <ul><li>Пример проведения нагрузочного тестирования будет продемонстрирован на модуле ге...
Нагрузочное тестирование. Пример. <ul><li>Создаём под-проект по отношению к основному и размещаем код (код, скрипты, шабло...
Нагрузочное тестирование. Пример. <ul><li>Создаём заглушки модулей участников взаимодействия ( FM, EM, Dict ) .  Они эмули...
Нагрузочное тестирование. Пример. <ul><li>Создаём  Ant  ( http://ant.apache.org/ ) скрипт, который выполняет ВСЮ работы в ...
Нагрузочное тестирование. Пример. <ul><li>Извлекает из  maven  репозитария все необходимые артефакты, включая заархивирова...
Нагрузочное тестирование. Пример. <ul><li>Запускает все сконфигурированные артефакты в настроенном  tomcat’ е (с активиров...
Нагрузочное тестирование. Пример. <ul><li>JMeter  начинает выполнять тестовые запросы в соответствии с конфигурационным фа...
Нагрузочное тестирование. Пример. <ul><li>После выполнения нагрузочных тестов сгенерированные  XML  файлы подвергаются спе...
Нагрузочное тестирование. Пример. <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><jm...
Нагрузочное тестирование. Пример.
Нагрузочное тестирование. Пример. <ul><li>После этого тот же  ant  скрипт запускает стандартные  JUnit  тесты, которые ана...
Нагрузочное тестирование. <ul><li>Приведённые скрипт (и его модификации для других продуктов) должен находиться в  CI  сер...
Нагрузочное тестирование. <ul><li>При разработке данные скрипт (и его модификации) могут использоваться для автоматизации ...
Upcoming SlideShare
Loading in...5
×

Monitoring and Load testing

1,804

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,804
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
46
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Monitoring and Load testing"

  1. 1. Мониторинг. Нагрузочное тестирование. [email_address] 2009.01.19
  2. 2. Мониторинг. Обоснование. <ul><li>Предварительные вопросы: </li></ul><ul><ul><li>Сколько времени CPU потребляет Ваше приложение? </li></ul></ul><ul><ul><li>Сколько памяти операционной системы оно использует? </li></ul></ul><ul><ul><li>Сколько объектов оно хранит в своём хранилище? </li></ul></ul><ul><ul><li>Сколько пользователей в системе сейчас? </li></ul></ul><ul><ul><li>Сколько раз вызывается тот или иной метод ( а так же каково его время выполнения ) ? </li></ul></ul>
  3. 3. Мониторинг. Обоснование. <ul><li>Причём, все эти показатели в разрезе времени… </li></ul>
  4. 4. Мониторинг. Обоснование. <ul><li>Если Вы не можете ответить на эти вопросы, то Вашему программному обеспечению нужны средства мониторинга. </li></ul>
  5. 5. Мониторинг. JMX. <ul><li>JMX ( J ava M anagement e X tension) </li></ul><ul><li>Расширение Java машины ( JVM ) для предоставления средств мониторинга и управления. </li></ul><ul><li>Впервые появилась как часть JRE/JDK в Java 1.5 ( но можно использовать и в Java 1.4) </li></ul><ul><li>Получила дальнейшее развитие в Java 6, Java 7… </li></ul>
  6. 6. Мониторинг. JMX. <ul><li>Какую информацию JMX позволяет получать? </li></ul><ul><ul><li>Информацию о JMV (CPU, память, кол-во потоков, загруженные классы, Heap/Non Heap память, сборщик мусора и пр… ) </li></ul></ul><ul><ul><li>Информацию специфичную для приложения, которое выполняется в JVM. </li></ul></ul>
  7. 7. Мониторинг. JMX. <ul><li>Для получения представления о том, как информация, специфичная для приложения, может быть опубликована через JMX , необходим краткий экскурс в архитектуру. </li></ul>
  8. 8. Мониторинг. JMX.
  9. 9. Мониторинг. JConsole. <ul><li>В комплекте с JDK идёт стандартный клиент для мониторинга JMX данных – jconsole. </li></ul>
  10. 10. Мониторинг. JConsole.
  11. 11. Мониторинг. JConsole.
  12. 12. Мониторинг. JConsole.
  13. 13. Мониторинг. Включение JMX. <ul><li>В Java 6 локальные соединения JMX активированы по-умолчанию. </li></ul><ul><li>В Java 5 , для JVM необходимо передать параметр </li></ul><ul><ul><li>-Dcom.sun.management.jmxremote= true </li></ul></ul><ul><li>Для активации удалённых подключений (с других машин) (в обеих версиях): </li></ul><ul><ul><li>-Dcom.sun.management.jmxremote.port= ???? </li></ul></ul><ul><ul><li>-Dcom.sun.management.jmxremote.authenticate=false </li></ul></ul><ul><ul><li>-Dcom.sun.management.jmxremote.ssl=false </li></ul></ul>
  14. 14. Мониторинг. MAGNET. <ul><li>Подсистема мониторинга MAGNET. </li></ul><ul><li>Кое-кто уже использует одну из подсистем платформы. Подсистему журналирования. </li></ul><ul><li>Подключается просто: </li></ul><ul><li><dependency> </li></ul><ul><li><groupId>ru.magnetosoft.magnet</groupId> </li></ul><ul><li><artifactId>magnet-subsystem-management</artifactId> </li></ul><ul><li><version>0.1-SNAPSHOT</version> </li></ul><ul><li></dependency> </li></ul>
  15. 15. Мониторинг. MAGNET. <ul><li>Подсистема позволяет собирать статистику по состояниям системы, по действиям выполняемым в ней. </li></ul><ul><li>Накапливать и хранить статистику. </li></ul><ul><li>Возвращать её в запрошенные диапазоны времени. </li></ul><ul><li>Кроме того, она содержит утилиты для преобразования данных в форматы, специфичные для JMX протокола (и обратно). </li></ul>
  16. 16. Нагрузочное тестирование. Обоснование. <ul><li>Симптомы необходимости внедрения нагрузочного тестирования: </li></ul><ul><ul><li>Через 3 месяца система начинает «деградировать». </li></ul></ul><ul><ul><li>При пороге в 5 одновременных пользователей время ответа системы превышает 2 сек. </li></ul></ul><ul><ul><li>Неожиданные ошибки конкурентного доступа. </li></ul></ul><ul><ul><li>Зависание приложение системы при интенсивной работе. </li></ul></ul><ul><ul><li>Непонятное потребление ресурсов при интенсивной работе или большом кол-ве пользователей. </li></ul></ul>
  17. 17. Нагрузочное тестирование. Правило # 1. <ul><li>Нагрузочное тестирование – не однократная процедура. </li></ul>
  18. 18. Нагрузочное тестирование. JMeter. <ul><li>JMeter - продукт для проведения нагрузочного тестирования. </li></ul><ul><li>Особенности: </li></ul><ul><ul><li>Тестирование различных видов серверов: </li></ul></ul><ul><ul><ul><li>Web - HTTP, HTTPS </li></ul></ul></ul><ul><ul><ul><li>SOAP /WS </li></ul></ul></ul><ul><ul><ul><li>Database via JDBC </li></ul></ul></ul><ul><ul><ul><li>LDAP </li></ul></ul></ul><ul><ul><li>Полностью портируем на все платформы (написан на Java ). </li></ul></ul><ul><ul><li>Многопоточность обеспечивает конкурентные замеры различных функций и обеспечивает эмуляцию виртуальных пользователей ( VUser ). </li></ul></ul><ul><ul><li>Offline анализ результатов замеров. </li></ul></ul><ul><ul><li>Высокая конфигурируемость. </li></ul></ul>
  19. 19. Нагрузочное тестирование. JMeter. <ul><li>На текущий момент рассмотрим возможности JMeter в области тестирования веб-сервисов. </li></ul><ul><li>После (возможно в другой презентации) – тестирование веб-приложений. </li></ul>
  20. 20. Нагрузочное тестирование. JMeter. <ul><li>Основные компоненты JMeter: </li></ul><ul><ul><li>Sampler – генератор запросов </li></ul></ul><ul><ul><li>Listener – анализатор результатов выполнения запросов </li></ul></ul><ul><ul><li>Controller – контроль выполнения Sampler’ ов (циклы, условия, группы, время выполнения и прочее…) </li></ul></ul>
  21. 21. Нагрузочное тестирование. JMeter.
  22. 22. Нагрузочное тестирование. Пример. <ul><li>Пример проведения нагрузочного тестирования будет продемонстрирован на модуле гетерогенного поиска ( HS ) . </li></ul>
  23. 23. Нагрузочное тестирование. Пример. <ul><li>Создаём под-проект по отношению к основному и размещаем код (код, скрипты, шаблоны) по тестированию в нём. </li></ul>
  24. 24. Нагрузочное тестирование. Пример. <ul><li>Создаём заглушки модулей участников взаимодействия ( FM, EM, Dict ) . Они эмулируют поведение своих реальных собратьев, но выдают псевдо-данные, которые предназначены для создания заполнения основного модуля. </li></ul><ul><li>Для тех, кто не в курсе модуль HS , производит первоначальное извлечение данных из всех остальных модулей (подвергая их предварительной обработке), после чего переходит в основной режим работы. Режим выполнения сложных поисковых запросов. </li></ul>
  25. 25. Нагрузочное тестирование. Пример. <ul><li>Создаём Ant ( http://ant.apache.org/ ) скрипт, который выполняет ВСЮ работы в автоматическом режиме. </li></ul>
  26. 26. Нагрузочное тестирование. Пример. <ul><li>Извлекает из maven репозитария все необходимые артефакты, включая заархивированные версии tomcat’ а и jmeter. Это позволяет избежать предварительной настройки рабочих мест для проведения тестов. </li></ul><ul><li>Распаковывает и конфигурирует извлечённые артефакты. </li></ul>
  27. 27. Нагрузочное тестирование. Пример. <ul><li>Запускает все сконфигурированные артефакты в настроенном tomcat’ е (с активированной поддержкой JMX ). </li></ul><ul><li>Ждёт старта и окончания предварительной синхронизации модулей. </li></ul><ul><li>Запускает JMeter ( как ant задачу ) , передавая ему в качестве параметров конфигурационный файл, в котором указано, что и как тестировать, а так же куда записывать результаты и логи. </li></ul>
  28. 28. Нагрузочное тестирование. Пример. <ul><li>JMeter начинает выполнять тестовые запросы в соответствии с конфигурационным файлом (который также имеет расширение “.jmx” ) . Одновременно при этом он снимает показатели с JVM и записывает их в указанный лог-файл ( XML формата). </li></ul>
  29. 29. Нагрузочное тестирование. Пример. <ul><li>После выполнения нагрузочных тестов сгенерированные XML файлы подвергаются специальной обработке, после которой создаются XML и HTML файлы содержащие суммарную статистику теста. </li></ul>
  30. 30. Нагрузочное тестирование. Пример. <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><jmxJvmDataStatistics> </li></ul><ul><li><satistics> </li></ul><ul><li><recordsCount>32</recordsCount> </li></ul><ul><li><measurementStarted>2009-01-18T13:31:25.062+0300</measurementStarted> </li></ul><ul><li><measurementFinished>2009-01-18T13:32:06.046+0300</measurementFinished> </li></ul><ul><li><measurementTime>40984</measurementTime> </li></ul><ul><li><jvmUptimeAtMeasurementEnd>143843</jvmUptimeAtMeasurementEnd> </li></ul><ul><li></satistics> </li></ul><ul><li><maxStateData> </li></ul><ul><li><processCPUUsagePerCent>26.7159257449927</processCPUUsagePerCent> </li></ul><ul><li><commitedVirtualMemorySize>52539392</commitedVirtualMemorySize> </li></ul><ul><li><heapMemoryUsage>9091984</heapMemoryUsage> </li></ul><ul><li><nonHeapMemoryUsage>23645624</nonHeapMemoryUsage> </li></ul><ul><li><threadCount>26</threadCount> </li></ul><ul><li><freePhysicalMemorySize>143142912</freePhysicalMemorySize> </li></ul><ul><li><freeSwapSpaceSize>686731264</freeSwapSpaceSize> </li></ul><ul><li></maxStateData> </li></ul><ul><li><minStateData> </li></ul><ul><li><processCPUUsagePerCent>0.000000944645308465716</processCPUUsagePerCent> </li></ul><ul><li><commitedVirtualMemorySize>49008640</commitedVirtualMemorySize> </li></ul><ul><li><heapMemoryUsage>8109448</heapMemoryUsage> </li></ul><ul><li><nonHeapMemoryUsage>22115016</nonHeapMemoryUsage> </li></ul><ul><li><threadCount>26</threadCount> </li></ul><ul><li><freePhysicalMemorySize>136445952</freePhysicalMemorySize> </li></ul><ul><li><freeSwapSpaceSize>679084032</freeSwapSpaceSize> </li></ul><ul><li></minStateData> </li></ul><ul><li><avgStateData> </li></ul><ul><li><processCPUUsagePerCent>5.81998057718807</processCPUUsagePerCent> </li></ul><ul><li><commitedVirtualMemorySize>51784704</commitedVirtualMemorySize> </li></ul><ul><li><heapMemoryUsage>8590992</heapMemoryUsage> </li></ul><ul><li><nonHeapMemoryUsage>23369054.25</nonHeapMemoryUsage> </li></ul><ul><li><threadCount>26</threadCount> </li></ul><ul><li><freePhysicalMemorySize>137923072</freePhysicalMemorySize> </li></ul><ul><li><freeSwapSpaceSize>680529664</freeSwapSpaceSize> </li></ul><ul><li></avgStateData> </li></ul><ul><li></jmxJvmDataStatistics> </li></ul>
  31. 31. Нагрузочное тестирование. Пример.
  32. 32. Нагрузочное тестирование. Пример. <ul><li>После этого тот же ant скрипт запускает стандартные JUnit тесты, которые анализируют итоговые XML файлы (а могут и оригинальные) и принимают решение – прошёл тест или нет. </li></ul>
  33. 33. Нагрузочное тестирование. <ul><li>Приведённые скрипт (и его модификации для других продуктов) должен находиться в CI сервер и отслеживать: не повлияли ли внесённые изменения на требуемые показатели производительности. </li></ul>
  34. 34. Нагрузочное тестирование. <ul><li>При разработке данные скрипт (и его модификации) могут использоваться для автоматизации основных задач (конфигурирование, развёртывание). </li></ul><ul><li>Запуск самого JMeter’ а можно проводит в ручную. Благодаря его богатому графическому интерфейсу процесс распределения нагрузки можно проследить более визуально. </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×