You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter中通过HTTPS发送含编码PDF的大型JSON请求?

解决JMeter发送大型JSON请求的内存优化方案

核心思路

避免将整个请求体加载到JVM内存,改用文件流直接发送的方式,同时优化结果树的存储配置减少性能损耗。

方案1:用Groovy脚本实现流发送(原生支持,无需插件)

在HTTP Request采样器上添加JSR223 PreProcessor,选择Groovy语言,写入以下代码:

import org.apache.http.entity.ContentType
import org.apache.http.entity.FileEntity
import org.apache.jmeter.protocol.http.sampler.HTTPRequest

// 获取当前HTTP采样器
def sampler = ctx.getCurrentSampler()
if (sampler instanceof HTTPRequest) {
    // 替换为你的大型JSON文件路径(绝对路径或相对JMeter启动目录的路径)
    def requestFile = new File("data/large-request.json")
    // 创建文件实体,指定JSON内容类型
    def fileEntity = new FileEntity(requestFile, ContentType.APPLICATION_JSON)
    // 清空原有请求参数,设置为文件流实体
    sampler.getArguments().clear()
    sampler.setEntity(fileEntity)
}
  • 原理:通过FileEntity让JMeter直接读取文件流发送,不会将整个文件内容加载到内存。
  • 注意:确保JSON文件中已经包含编码好的PDF内容,无需再做额外处理。

方案2:关闭结果树的请求体存储(减少内存占用)

即使使用流发送,查看结果树默认会保存请求体副本,导致内存占用高、加载慢。需调整:

  • 打开查看结果树,点击右上角的配置按钮。
  • 取消勾选"Save request body"选项,仅在调试时临时开启。

辅助优化:调整JVM堆内存(可选)

如果仍有内存压力,修改JMeter启动脚本(jmeter.bat/jmeter.sh)中的JVM参数:

HEAP="-Xms2g -Xmx4g"

根据服务器配置调整数值,避免堆内存不足导致的性能问题。

内容的提问来源于stack exchange,提问作者Raffaele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:42:54