Для оптимизации 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 в сценариях запуска 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 «Недостаточно памяти» полезен.