我有一个简单的JMeter测试计划,该计划具有一个发布2MB JSON有效负载的HTTP HTTP采样器。我们将测试配置为通过最终线程组和吞吐量调整计时器支持的50至75个线程,实现每秒50个事务。 JMeter在具有Oracle JDK / jre的Mac上以8GB堆配置和G1GC算法运行。
结构
最终线程组 吞吐量整形计时器 具有2MB的HTTP Sampler-正文字段中的JSON文件 JSON断言 HTTP标头管理器
经过测试的选项 1. 10线程/ 10 TPS-静态内存消耗从3GB到8GB 2.使用__StringFromFile读取文件中的有效负载,然后将其用作使用$ {}的变量以及用作$ __ P的属性。两个选项中的内存开销均相同 3. OS进程采样器配置为使用更好的CURL,并且只有10个线程消耗了500 MB。但是我想知道在hTTP采样器本身中是否有更好的选择来实现这一目标。也就是说,通过8GB配置,每个JVM可以获得更高的吞吐量。
答案 0 :(得分:0)
为了最大程度地减少发送大文件时JMeter的内存消耗,可以使用HTTP Raw Request sampler
它具有special mode允许direct streaming of the file to the endpoint avoiding prior reading it into the memory,因此您可以发送任何大小的文件,而不会影响JMeter的堆空间。
安装HTTP Raw Request采样器。