jmeter下载1.5g文件内存不足异常

时间:2018-01-26 00:36:15

标签: java apache jmeter

我从命令行运行jmx

JVM_ARGS="-Xms2048m -Xmx4096m -XX:4096ize=4096m -XX:MaxNewSize=4096m"  && export JVM_ARGS && ./jmeter.sh -n -t ./jmeter-ec2.jmx -l ./scriptresults.jtl 

但是在某些方面我在转到jmeter.log之后出现内存错误 我发现了这个错误

  

ERROR o.a.j.JMeter:未捕获的异常:java.lang.OutOfMemoryError:   java.util.Arrays.copyOf中的Java堆空间(Arrays.java:3236)   〜[?:1.8.0_91] at   java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)   〜[?:1.8.0_91] at   java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)   〜[?:1.8.0_91] at   java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)   〜[?:1.8.0_91] at   org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.readResponse(HTTPSamplerBase.java:1833)   〜[ApacheJMeter_http.jar:3.3 r1808647] at   org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl.readResponse(HTTPAbstractImpl.java:440)   〜[ApacheJMeter_http.jar:3.3 r1808647] at   org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:474)   〜[ApacheJMeter_http.jar:3.3 r1808647] at   org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)   〜[ApacheJMeter_http.jar:3.3 r1808647] at   org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1189)   〜[ApacheJMeter_http.jar:3.3 r1808647] at   org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1178)   〜[ApacheJMeter_http.jar:3.3 r1808647] at   org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:498)   〜[ApacheJMeter_core.jar:3.3 r1808647] at   org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424)   〜[ApacheJMeter_core.jar:3.3 r1808647] at   org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255)   〜[ApacheJMeter_core.jar:3.3 r1808647] at   java.lang.Thread.run(Thread.java:745)[?:1.8.0_91] 2018-01-26   02:03:55,731 INFO o.a.j.e.StandardJMeterEngine:通知测试   测试结束的听众2018-01-26 02:03:55,732 INFO   o.a.j.r.Summariser:summary = 0 in 00:00:00 = ****** / s Avg:0   最小:9223372036854775807最高:-9223372036854775808错误:0(0.00%)

我在这里做错了什么?我无法解决它:(

2 个答案:

答案 0 :(得分:1)

您的JVM参数错误,只需保留:

  

-Xms2048m -Xmx4096m

您不知道发生了多少线程,也不知道您是在GUI还是非GUI模式下运行,所以:

  1. 不要在GUI模式下运行,它是一种反模式
  2. 确保您的线程有足够的内存
  3. 最后,您可以通过在user.properties中调整此响应来减少大响应的内存影响:

      

    httpsampler.max_bytes_to_store_per_request

    另一种选择是仅通过在http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request中设置

    来计算响应中的HASH

    HTTP Request Advanced panel

答案 1 :(得分:0)

好吧,如果您拥有1.5 GB的文件,您将能够拥有不超过3个虚拟用户,这对我来说看起来不像是“负载测试”。

如果您对下载文件的内容不感兴趣并且只想强调您的服务器,您可以考虑切换到JSR223 Sampler,它将发送请求并使用基础Apache HttpComponents库方法丢弃响应数据,相关Groovy代码类似于:

<p>

参考文献: