首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Jmeter中处理较大长度的随机字符串

如何在Jmeter中处理较大长度的随机字符串
EN

Stack Overflow用户
提问于 2020-08-25 19:33:49
回答 1查看 54关注 0票数 0

需要从Jmeter发布以下格式的有效负载,

HTTP负载示例:

代码语言:javascript
运行
复制
[
  {
    "audit": {
        "id": "${id}",
        "timestamp": "${time}",
        "type": "input",
        "entry": "File retrieved, validated and processed successfully",
        "message": {
          "headers": "${headrer_payload}",
          "payload": "${message_payload}",
          "type": "csv",
          "protocol": ""
        },
        "keys": [
          {
            "name": "file-archive-location",
            "value": "Performance Test From Jmeter"
          }
        ]
      },
      "context": {
        "transactionId": "${trans_id}",
        "messageId": "${messageid}",
        "customerId": "Test",
        "studyId": "TEST1234"
      }
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

在这里,对于headrer_payload & message_payload,我在一个JSR223预处理器中使用Jmeter随机函数,长度如下:

代码语言:javascript
运行
复制
def header = "${__RandomString(30500,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=,)}"
def payload = "${__RandomString(30500,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=,)}"

    vars.put("headrer_payload",header);
    vars.put("message_payload",payload);

我担心当这个脚本运行更长时间时,JMeter会出现堆空间紧缩。有没有更好的方法来处理这么大的字符串?不能减少长度。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-25 23:27:14

Don't inline JMeter Functions or Variables into Groovy scripts,您可以将JMeter函数直接插入到HTTP Request采样器的“主体数据”区域:

代码语言:javascript
运行
复制
[
  {
    "audit": {
        "id": "${__UUID}",
        "timestamp": "${time}",
        "type": "input",
        "entry": "File retrieved, validated and processed successfully",
        "message": {
          "headers": "${__RandomString(30500,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=,)}",
          "payload": "${__RandomString(30500,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=,)}",
          "type": "csv",
          "protocol": ""
        },
        "keys": [
          {
            "name": "file-archive-location",
            "value": "Performance Test From Jmeter"
          }
        ]
      },
      "context": {
        "transactionId": "${__UUID}",
        "messageId": "${__UUID}",
        "customerId": "Test",
        "studyId": "TEST1234"
      }
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

此外,如果您勾选了“缓存编译的脚本”框,这意味着相同的值将用于所有后续迭代,而不是生成新的值。

将函数注入到HTTP请求采样器主体中将允许您避免在JMeter变量中保存60KB的数据,因此堆使用量将因此而减少。

一般来说,你可以有2 GB的字符串,没有任何问题,因为它们适合你的JVM堆,在任何情况下,只要你有足够的内存,就可以给JMeter分配更多的堆,有关更多细节,请参阅9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure文章。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63577941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档