JMeter и OutOfMemory. Исследовательский доклад

Post on 02-Jul-2015

368 views 1 download

description

Презентация Екатерины Карасаевой на SQA Days-16 14-15 ноября 2014, Санкт-Петербург, Россия www.sqadays.com

Transcript of JMeter и OutOfMemory. Исследовательский доклад

JMeter и OutOfMemory

Екатерина КарасаеваNetCracker

Обо мне

Экспертиза в нагрузочном тестировании

Тестирую телеком-решения в NetCracker

Skype — ekaterina.karasaeva

О чем будет доклад

JMeter и последствия OutOfMemory

Устройство памяти в JMeter (JVM HotSpot)

Про хипдамп и подходы к нему

«Best practices» в JMeter по работе с памятью

Apache JMeter

Open-source Java приложение

JMeter используется для

нагрузочного тестирования

Может создавать утечки

потребления ресурсов машины

Последствия OutOfMemory

Остановка всего нагрузочного теста

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

Невозможность сохранить изменения в JMeter скрипте

Устройство памяти Java

HeapPermGen(Method

Area)

Young Generation

Threads1..N

Old Generation

Eden From To

-Xms512m -Xmx512m

-XX:MaxPermSize=128m

N * -Xss1024k

Garbage Collector

Eden

From To

Old Generation

Young Generation

Minor GC чистит Young Generation Full GC чистит Young Generation + Old Generation Во время операций GC - треды JMeter

останавливаются (момент «stop-the-world»)

Full GC in action

OutOfMemory in action

HeapDump

В JMeter.bat прописать флаг

-XX:+HeapDumpOnOutOfMemoryError

При OutOfMemory будет файл

java_pid*.hprof (хипдамп, heap profiler)

Открываем хипдамп с помощью Memory Analyzer Tool

Используем репорты для анализа:

Run Expert System Test -> Leak Suspects репорт

Dominator tree репорт

Histogram репорт

Leak Suspects репорт

Histogram

Dominator-tree Leak Suspects

Dominator Tree репорт

Retained Heap

Shallow Heap

Histogram репорт

Чтобы узнать какие конкретные объекты съели память в этом классе – вызов контекстного меню – list objects – with incoming references

Histogram репорт

API JMeter

http://jmeter.apache.org/api/index.html - список всех API в JMeter

org.apache.jmeter.visualizers — Listeners, reports

org.apache.jmeter.report - Listeners, reports

org.apache.jmeter.assertions — Assertions

org.apache.jmeter.extractor — Post-processors (Beanshell, regexp)

org.apache.jmeter.functions — JMeter functions (Beanshell)

org.apache.jmeter.modifiers — Pre-processors

org.apache.jmeter.sampler — Debug Sampler, listeners, reports

org.apache.jmeter.util — BeanShell

JMeter — to do and not to do

Лиснеры: ставим галочку Errors only или выключаем полностью View Results in Table => возможность OutOfMemory

View Results in Tree => возможность OutOfMemoryДля логирования используйте Sample Data Writer

Проверьте размер хипа в файле JMeter.batset HEAP=-Xms2048m -Xmx2048m (по дефолту — 512 Мб)

Тестируйте в non-gui режимеjmeter -n -t test.jmx -l test.jtl

Для трекинга раскомментируйте строки в JMeter properties:#summariser.name=summary#summariser.interval=180#summariser.out=true

JMeter — to do and not to do

Пользуйтесь последней версией JMeter

Используйте встроенные функции JMeter

CSV легче XMLjmeter.save.saveservice.output_format=csv

При запуске большого количества тредов (>100), ставьте delay create threads until needed на Thread Group и не забывайте про Ramp-Up

Полезные ссылки

1. Как запустить JMeter в non-GUI режимеhttps://clck.ru/9MXHT (http://jmeter.apache.org)

2. Производительность JMeter в зависимости от версии https://clck.ru/9MXHX (http://wiki.apache.org)

3. How to monitor Java Garbage Collectionhttps://clck.ru/9MXHD (http://www.cubrid.org)

4. Memory Analyzer Tool — инструмент для анализа хипдамповhttp://www.eclipse.org/mat/