具有 2MB JSON 请求负载的 POST 请求的 JMeter 高内存消耗
JMeter High memory consumption for a POST request with 2MB JSON request payload
我有一个简单的 JMeter 测试计划,它有一个发布 2MB JSON 有效载荷的 HTTP 采样器。我们已将测试配置为实现每秒 50 个事务,并由最终线程组和吞吐量整形计时器支持 50 到 75 个线程。 JMeter 是 运行 8GB 堆配置和 G1GC 算法 Mac 与 Oracle JDK/jre。
结构
终极线程组
吞吐量整形定时器
具有 2MB 的 HTTP 采样器 - body 字段中的 JSON 文件
JSON断言
HTTP header 管理器
已测试的选项
1. 10 个线程/10 TPS - 内存消耗仍然从 3GB 到 8GB
2. 使用 __StringFromFile 从文件中读取负载,然后使用 ${} 将其用作变量,并使用 $__P 作为 属性。两个选项的内存开销保持不变
3. OS 配置为使用 CURL 的进程采样器更好,10 个线程仅消耗 500 MB。但我想知道在 hTTP 采样器本身中是否有更好的选择来实现这一点。即,使用 8GB 配置实现每个 JVM 的更高吞吐量。
为了在发送大文件时最小化 JMeter 的内存消耗,您可以使用 HTTP Raw Request sampler
它有一个 special mode allowing direct streaming of the file to the endpoint avoiding prior reading it into the memory,因此您可以发送任何大小的文件而不会对 JMeter 的堆产生任何影响 space。
您可以使用 JMeter's Plugins Manager
安装 HTTP 原始请求采样器
我有一个简单的 JMeter 测试计划,它有一个发布 2MB JSON 有效载荷的 HTTP 采样器。我们已将测试配置为实现每秒 50 个事务,并由最终线程组和吞吐量整形计时器支持 50 到 75 个线程。 JMeter 是 运行 8GB 堆配置和 G1GC 算法 Mac 与 Oracle JDK/jre。
结构
终极线程组 吞吐量整形定时器 具有 2MB 的 HTTP 采样器 - body 字段中的 JSON 文件 JSON断言 HTTP header 管理器
已测试的选项 1. 10 个线程/10 TPS - 内存消耗仍然从 3GB 到 8GB 2. 使用 __StringFromFile 从文件中读取负载,然后使用 ${} 将其用作变量,并使用 $__P 作为 属性。两个选项的内存开销保持不变 3. OS 配置为使用 CURL 的进程采样器更好,10 个线程仅消耗 500 MB。但我想知道在 hTTP 采样器本身中是否有更好的选择来实现这一点。即,使用 8GB 配置实现每个 JVM 的更高吞吐量。
为了在发送大文件时最小化 JMeter 的内存消耗,您可以使用 HTTP Raw Request sampler
它有一个 special mode allowing direct streaming of the file to the endpoint avoiding prior reading it into the memory,因此您可以发送任何大小的文件而不会对 JMeter 的堆产生任何影响 space。
您可以使用 JMeter's Plugins Manager
安装 HTTP 原始请求采样器