Hi.
I am trying to verify a large (>500Mb) response from a HTTP request, but
whenever I run my TestPlan
the thread fails after running out of memory.
I have added a "Save Responses to a file" Listener, but it looks like it is the
HTTP Request sampler that
fails when handling all the data in memory after the reception completes - see
error ourput below.
Console window output:
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid1912.hprof ...
Heap dump file created [558234258 bytes in 6.291 secs]
JMeter log file output:
2012/06/07 14:51:53 ERROR - jmeter.threads.JMeterThread: Test failed!
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.io.ByteArrayOutputStream.toByteArray(Unknown Source)
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.readResponse(HTTPSamplerBase.java:1635)
at
org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl.readResponse(HTTPAbstractImpl.java:236)
at
org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.readResponse(HTTPJavaImpl.java:288)
at
org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:518)
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1060)
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1049)
at
org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:442)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
at java.lang.Thread.run(Unknown Source)
I have already increased the heap allocation to its max on my hardware
(-Xmx1G), but without success. I guess I could
add memory, but since I have to run multiple downloads at the same time, it
does not look realistic.
I can enable the "Save response as MD5 hash" option and have my TestPlan
succeed, but then the output file from the
run only contain the MD5 hash and since my response data is somewhat dynamic it
is of no real use.
I can see that JMeter allows a large file to be uploaded by reading it as
needed during transmission, so I guess I need
the reverse of this i.e. store the response to a file while receiving it
without keeping it in memory. I guess something
like having the "Save response as MD5 hash" option dump the data to a file
after its calculation are done.
Does anybody know how I can do this ?
Thanks in advance,
Carsten.
P.S. I am using the following JMeter:
2012/06/07 14:20:45 INFO - jmeter.JMeter: Version 2.7 r1342410
2012/06/07 14:20:45 INFO - jmeter.JMeter: java.version=1.7.0_04
2012/06/07 14:20:45 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM)
Client VM
2012/06/07 14:20:45 INFO - jmeter.JMeter: os.name=Windows 7
2012/06/07 14:20:45 INFO - jmeter.JMeter: os.arch=x86
2012/06/07 14:20:45 INFO - jmeter.JMeter: os.version=6.1