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

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

JMeter и OutOfMemory

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

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

Обо мне

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

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

Skype — ekaterina.karasaeva

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

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

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

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

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

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

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

Apache JMeter

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

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

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

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

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

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

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

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

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

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

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

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

HeapPermGen(Method

Area)

Young Generation

Threads1..N

Old Generation

Eden From To

-Xms512m -Xmx512m

-XX:MaxPermSize=128m

N * -Xss1024k

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

Garbage Collector

Eden

From To

Old Generation

Young Generation

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

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

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

Full GC in action

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

OutOfMemory in action

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

HeapDump

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

-XX:+HeapDumpOnOutOfMemoryError

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

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

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

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

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

Dominator tree репорт

Histogram репорт

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

Leak Suspects репорт

Histogram

Dominator-tree Leak Suspects

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

Dominator Tree репорт

Retained Heap

Shallow Heap

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

Histogram репорт

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

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

Histogram репорт

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

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

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

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

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

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

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

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

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/