【问题标题】:Large file download testing大文件下载测试
【发布时间】:2019-09-24 03:06:00
【问题描述】:

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

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

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

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

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

如果有人知道如何做到这一点,请帮助我或让我知道是否有替代方法。

【问题讨论】:

    标签: download jmeter httprequest


    【解决方案1】:

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

    如果问题仍然存在,请考虑将相同的 JMETER 分布式配置转移到 AWS - 但这是一个巨大的进步。

    请尝试提到的第一点。

    附加说明:也请尝试禁用堆转储创建。从 JMeter.bat 文件中删除此 Comment DUMP="-XX:+HeapDumpOnOutOfMemoryError" 行。

    【讨论】:

    • 谢谢@Arjun。但我看到的是,即使在分布式设置中模拟 500 个并行连接下载 400MB 文件也需要至少 500*400MB 即 200GB 的 RAM,这是不现实的。但是如果 jmeter 将下载保存到磁盘而不是 RAM 中,那么我可以模拟许多具有较低 RAM 的设备。我的目的是看看服务器如何处理大量并行下载。即使保存到磁盘会减慢客户端的下载速度,它仍然是可以接受的。但据我所知,可用的 HTTP 采样器中没有这样的选项可以将其保存到磁盘而不是 RAM。
    【解决方案2】:

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

    1. wrk
    2. apache ab

    还有更多here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 2012-01-04
      • 2015-12-26
      • 1970-01-01
      • 2018-11-14
      相关资源
      最近更新 更多