我正在使用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个并行下载,这是我想要实现的。
如果有人知道该怎么做,请帮助我或者让我知道是否有其他方法。
答案 0 :(得分:1)
尝试创建Jmeter的分布式系统(主从设置)。请注意,例如,每个从属服务器上的JMETER的JAVA堆空间应大于6 GB(或更多)。如果您有足够的从服务器运行,则负载发送将最终在各个从服务器之间分配,这可能会解决您的问题。
如果问题仍然存在,请考虑为AWS使用相同的JMETER分布式配置-但这是一个巨大的步骤。
尝试一下提到的第一点。
其他说明:也请尝试通过禁用堆转储创建来尝试。要从JMeter.bat文件中删除此Comment DUMP =“-XX:+ HeapDumpOnOutOfMemoryError”行。
答案 1 :(得分:0)