JMeter OutOfMemoryError - PullRequest
       28

JMeter OutOfMemoryError

16 голосов
/ 18 февраля 2010

Я сталкиваюсь с ошибками OutOfMemor ниже, и JMeter перестает работать ....

java.lang.OutOfMemoryError: Java heap space Dumping heap to
    java_pid4412.hprof ... Heap dump file created [591747609 bytes in
    71.244 secs] Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space Exception in thread
    "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError:
    Java heap space Exception in thread "AWT-EventQueue-0"
    java.lang.OutOfMemoryError: Java heap space

Как это можно решить?
Моя система имеет очень хорошие характеристики, такие как 16 ГБ ОЗУ, 2x четырехъядерных процессора и 146 ГБ жесткого диска.

Кто-нибудь может мне помочь?

Ответы [ 10 ]

16 голосов
/ 23 ноября 2012

Ваш дамп кучи показывает, что вы используете настройки JMeter по умолчанию 512 мес. так что даже если у вас есть 16 ГБ, вы не используете их.

Замените JVM по умолчанию, необязательно в jmeter.bat, на правильный размер:

set HEAP=-server -Xms768m -Xmx768m -Xss128k 

set NEW=-XX:NewSize=1024m -XX:MaxNewSize=1024m

Также посмотрите на:

15 голосов
/ 18 февраля 2010

Сколько памяти вы выделили для JVM? Где-то около 512 МБ?

Конфигурация

java -Xms<initial heap size> -Xmx<maximum heap size>
9 голосов
/ 23 июля 2016

Для оптимизации OutOfMemoryError необходимо выполнить следующие шаги:

  • Увеличение размера кучи Java:

JMeter - это инструмент Java, который работает с JVM . Чтобы получить максимальные возможности, нам нужно предоставить максимальное количество ресурсов JMeter во время выполнения. Во-первых, нам нужно увеличить размер кучи (Внутри каталога bin JMeter мы получаем jmeter.bat/sh).

HEAP=-Xms512m –Xmx512m

Это означает, что выделенный по умолчанию размер кучи составляет минимум 512 МБ, максимум 512 МБ. Настройте его в соответствии с вашей конфигурацией собственной машины . Следует также иметь в виду, что ОС также требуется некоторое количество памяти, поэтому не следует выделять всю физическую память.

  • Запуск тестов в режиме без графического интерфейса пользователя:

JMeter - это приложение Java GUI . Он также имеет версию без графического интерфейса, которая очень ресурсоемкая (CPU / RAM). Если мы запустим Jmeter в режиме без графического интерфейса, он будет потреблять меньше ресурсов , и мы сможем запустить больше потоков.

  • Отключить ВСЕХ слушателей во время пробного запуска. Они предназначены только для отладки и используют их для разработки нужного сценария.

Слушатели должны быть отключены во время нагрузочных тестов. Включение их приводит к дополнительным накладным расходам, которые потребляют ценные ресурсы, необходимые для более важных элементов вашего теста.

  • Используйте современное программное обеспечение:

Java и JMeter должны обновляться.

  • Решите, какие метрики вам нужно хранить:

Когда речь идет о хранении запросов и заголовков ответов, результаты утверждений и данные ответов могут занимать много памяти! Поэтому разумно стараться не хранить эти значения в JMeter, если это не является абсолютно необходимым.

  • твик JVM:

Следующие аргументы JVM в сценариях запуска JMeter также могут быть добавлены или изменены:

1. Добавить скорость выделения памяти:

NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

Это означает, что память будет увеличена с такой скоростью.

2. -server - это переводит JVM в «серверный» режим с оптимизацией параметров времени выполнения. В этом режиме JMeter запускается медленнее, но общая пропускная способность будет выше.

3. -d64 - При использовании 64-битной ОС использование этого параметра может явно указывать JVM работать в 64-битном режиме.

4. -XX:+UseConcMarkSweepGC - это принудительно использует сборщик мусора CMS. Это снизит общую пропускную способность, но приведет к гораздо более коротким процессорам с интенсивной сборкой мусора.

5. -XX:+DisableExplicitGC - это предотвращает принудительное использование дорогими сборками мусора приложениями и помогает избежать неожиданных пауз.

Для лучшего и более глубокого понимания, этот блог о 9 простых решениях для теста нагрузки JMeter «Недостаточно памяти» полезен.

5 голосов
/ 25 октября 2012

У меня тоже была эта проблема, и не имело значения, насколько я изменил конфигурацию java -Xms<initial heap size> -Xmx<maximum heap size>, так как у меня всегда не хватало памяти. В конце концов я обнаружил, что запуск JMeter в режиме GUI (особенно со слушателями) вызывает узкое место. Лучший способ использовать JMeter, особенно для расширенного тестирования или запуска нескольких подчиненных серверов, - это режим без графического интерфейса, который выглядит примерно так:

jmeter -n -t testplan.jmx -r

Проверьте эту ссылку и прочитайте, как правильно выполнить дистанционное тестирование: http://wiki.apache.org/jmeter/JMeterFAQ#How_to_do_remote_testing_the_.27proper_way.27.3F. Прочтите раздел о дистанционном тестировании «правильным способом».

Надеюсь, это поможет.

4 голосов
/ 10 августа 2012

Вы должны проверить, не используете ли вы прослушиватель результатов в виде дерева во время тестов со многими пользователями.

Ознакомьтесь с рекомендациями jmeter, чтобы избежать подобных проблем.

С уважением

2 голосов
/ 06 ноября 2018

Запустите Jmeter в режиме без графического интерфейса. Увеличьте размер кучи памяти. Добавить очень меньше / нет слушателей. Для запуска Jmeter в режиме без графического интерфейса перейдите в каталог bin и откройте командную строку в этом окне. используйте следующую команду «jmeter.bat -n -t Test.jmx -l Test.csv» здесь Test.jmx - это тестовый файл, который мне нужно открыть в режиме без графического интерфейса, а Test.csv - файл, в котором мне нужно результаты сохранены. Для увеличения размера памяти используйте команду HEAP = "- Xms512m -Xmx2048m", здесь 512 - это уже выделенная память, а 2048 - это память, которую мне нужно выделить для Jmeter.

Надеюсь, это поможет

2 голосов
/ 16 мая 2017

В версии 3.x Jmeter упоминается в $ JMETER_HOME / bin / jemter.sh (jmeter.bat):

## Переменные среды:
## JVM_ARGS - необязательные аргументы java, например -Dprop = VAL
## например,
## JVM_ARGS = "- Xms512m -Xmx512m" jmeter.sh и т. Д.

так что в вашем случае вы можете установить его настолько, насколько вам нужно, например:

JVM_ARGS="-Xms1024m -Xmx1024m"
2 голосов
/ 03 марта 2017

Вы должны изменить РАЗМЕР КАРТЫ в файле jmeter.bat.Сначала вам нужно преобразовать размер 2 ГБ или 6 ГБ (ИЛИ размер, который вы хотите поместить) в МБ, а затем сохранить его и перезапустить .bat файл.

Установить значение для "set HEAP = - Xms512m -Xmx512m"

2 голосов
/ 25 марта 2016

Хотя ваш сервер имеет 16 ГБ ОЗУ, размер кучи JMeter по умолчанию составляет 512 МБ, увеличьте размер кучи, выполнив следующие шаги

1. Open jmeter file using vi editor /text editor
2. Search for "HEAP"
3. Change minimum (-Xms) and Maximum (-Xmx) heap values as you required
4. Save and quit (!wq enter)  
5. Start Jmeter by sh jmeter.sh or bash jmeter.bat or java -jar ApacheJMeter.jar
0 голосов
/ 27 апреля 2016

Отрегулируйте размер кучи, как указано в других ответах, а также примите во внимание некоторые лучшие практики

  • При выполнении теста (не при проверке курса) используйте режим без графического интерфейса
  • Отключите любого тяжелого слушателя, такого как View Result Tree, но вместо этого используйте Simple Data Writer и анализируйте ваши данные впоследствии

Эти 2 предмета уже значительно повысят вашу производительность и размер кучи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...