大文件下载测试

时间:2019-05-06 13:05:51

标签: download jmeter httprequest

我正在使用JMeter来测试从服务器下载大文件(500 MB)。我想找出服务器可以支持多少并行下载。

我创建了一个具有1000个线程和HTTP Request采样器的测试计划。我进行了测试。但是我所有的请求均失败,并显示如下错误:

2019-05-06 18:07:33,884 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-11
2019-05-06 18:07:33,884 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.OutOfMemoryError: Java heap space

我用Google搜索,发现增加最大堆大小将解决此问题。因此,我得出的结论是JMeter正在将文件下载到RAM中。因此,如果正在进行两次并行的400 MB下载,则将使用800 MB RAM。但这显然不切实际,因为我必须测试500个并行下载。

我在考虑是否可以将HTTPRequest采样器配置为将下载的内容存储到磁盘中,而不是将其存储在RAM中或忽略它(下载并立即丢弃)。这将使我能够测试500个并行下载,这是我想要实现的。

如果有人知道该怎么做,请帮助我或者让我知道是否有其他方法。

2 个答案:

答案 0 :(得分:1)

尝试创建Jmeter的分布式系统(主从设置)。请注意,例如,每个从属服务器上的JMETER的JAVA堆空间应大于6 GB(或更多)。如果您有足够的从服务器运行,则负载发送将最终在各个从服务器之间分配,这可能会解决您的问题。

如果问题仍然存在,请考虑为AWS使用相同的JMETER分布式配置-但这是一个巨大的步骤。

尝试一下提到的第一点。

其他说明:也请尝试通过禁用堆转储创建来尝试。要从JMeter.bat文件中删除此Comment DUMP =“-XX:+ HeapDumpOnOutOfMemoryError”行。

答案 1 :(得分:0)

更多搜索之后,我意识到JMeter没有任何此类选项,但是还有其他工具可以更有效地完成相同的工作。这是我尝试过的一些。

  1. wrk
  2. apache ab

还有更多列出的here