jmeter test failed with out of memory error

Viewed 59410

When try to run jMeter with 50 or more user it gives OutOfMemoryError:

2013/12/18 13:35:15 ERROR - jmeter.threads.JMeterThread: Error processing Assertion  java.lang.OutOfMemoryError: Java heap space
2013/12/18 13:35:15 ERROR - jmeter.threads.JMeterThread: Error processing Assertion     java.lang.OutOfMemoryError: Java heap space
2013/12/18 13:35:15 ERROR - jmeter.threads.JMeterThread: Error processing Assertion  java.lang.OutOfMemoryError: Java heap space
2013/12/18 13:35:15 ERROR - jmeter.threads.JMeterThread: Error processing Assertion  java.lang.OutOfMemoryError: Java heap space
2013/12/18 13:35:16 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.OutOfMemoryError: Java heap space
2013/12/18 13:35:17 ERROR - jmeter.threads.JMeterThread: Test failed! 

I tried to increase the heap size but still getting the same error.
Even i tried to remove all the listeners but nothing changed.

8 Answers

There can be many reasons why JMeter is consuming a lot of memory:

  • Use and abuse of UI Listeners,
  • Running a test in UI mode: run the test in batch mode instead
  • JMeter SaveService badly configured: Are you saving requests and responses in JTL?
  • Too many threads per JMeter load generator? Usually less than 1000 per engine should be okay, but it depends on the script complexity too. See Remote Testing to run JMeter in Distributed Mode.

Tweaking the Heap is just one way to fix those issues:

JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh

Check out JMeter Out Of Memory: 12 Ways to Fix Them for even more valuable tips.

My one liner for this on a Mac (jmeter is bash script in this case):

$ JVM_ARGS="-Xms4g -Xmx4g -XX:NewSize=4g -XX:MaxNewSize=4g" && export JVM_ARGS && jmeter

To set a higher JVM heap space, find your jmeter script (/usr/share/jmeter/bin/jmeter on Ubuntu when jmeter was installed through apt) and add the following line (found on https://www.blazemeter.com/blog/9-easy-solutions-jmeter-load-test-%e2%80%9cout-memory%e2%80%9d-failure/) before the run_java line:

HEAP="-Xms512m -Xmx4g"

Here the maximum heap space was increased to 4GB.

However you might still run out of memory. This can happen when you run a lot of samples and you have a listener which collects data for each sample (for example Listener -> View Results in Tree). Remove this kind of (result) listener and focus on summarized result listeners (e.g. Listener -> Summary Report). This uses much less heap space, even for large stress tests.

Related