JMeter и OutOfMemory. Исследовательский доклад
description
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/