2. Обо мне
Экспертиза в нагрузочном тестировании
Тестирую телеком-решения в NetCracker
Skype — ekaterina.karasaeva
3. О чем будет доклад
JMeter и последствия OutOfMemory
Устройство памяти в JMeter (JVM HotSpot)
Про хипдамп и подходы к нему
«Best practices» в JMeter по работе с памятью
4. Apache JMeter
Open-source Java приложение
JMeter используется для
нагрузочного тестирования
Может создавать утечки
потребления ресурсов машины
5. Последствия OutOfMemory
Остановка всего нагрузочного теста
Невалидность нагрузочного замера
Невозможность сохранить изменения в JMeter скрипте
6. Устройство памяти Java
Heap
PermGen
(Method
Area)
Young
Generation
Threads
1..N
Old
Generation
Eden From To
-Xms512m
-Xmx512m
-XX:MaxPermSize
=128m
N * -Xss1024k
7. Garbage Collector
Eden
From To
Old Generation
Young
Generation
Minor GC чистит Young Generation
Full GC чистит Young Generation + Old Generation
Во время операций GC - треды JMeter
останавливаются (момент «stop-the-world»)
10. HeapDump
В JMeter.bat прописать флаг
-XX:+HeapDumpOnOutOfMemoryError
При OutOfMemory будет файл
java_pid*.hprof (хипдамп, heap profiler)
Открываем хипдамп с помощью Memory Analyzer Tool
Используем репорты для анализа:
Run Expert System Test -> Leak Suspects репорт
Dominator tree репорт
Histogram репорт
13. Histogram репорт
Чтобы узнать
какие конкретные
объекты съели
память в этом
классе –
вызов
контекстного
меню –
list objects –
with incoming
references
15. 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
16. JMeter — to do and not to do
Лиснеры: ставим галочку Errors only или выключаем полностью
View Results in Table => возможность OutOfMemory
View Results in Tree => возможность OutOfMemory
Для логирования используйте Sample Data Writer
Проверьте размер хипа в файле JMeter.bat
set 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
17. JMeter — to do and not to do
Пользуйтесь последней версией JMeter
Используйте встроенные функции JMeter
CSV легче XML
jmeter.save.saveservice.output_format=csv
При запуске большого количества тредов (>100), ставьте delay
create threads until needed на Thread Group и не забывайте про
Ramp-Up
18. Полезные ссылки
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 Collection
https://clck.ru/9MXHD (http://www.cubrid.org)
4. Memory Analyzer Tool — инструмент для анализа хипдампов
http://www.eclipse.org/mat/