如何在 Jmeter 中处理更大长度的随机字符串
How to handle bigger length of random string in Jmeter
需要post来自 Jmeter 的具有以下格式的负载,
示例 HTTP 负载:
[
{
"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 随机函数,长度如下,
def header = "${__RandomString(30500,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=,)}"
def payload = "${__RandomString(30500,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=,)}"
vars.put("headrer_payload",header);
vars.put("message_payload",payload);
我担心此脚本何时会 运行 更长时间 JMeter 有一个堆 space c运行ch。有没有更好的方法来处理这么大的字符串?无法减少长度。
Don't inline JMeter Functions or Variables into Groovy scripts, you can insert JMeter Functions directly into HTTP Request采样器的“Body数据”区域:
[
{
"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 请求采样器 body 将允许您避免在 JMeter 变量中保存 60 KB 的数据,因此堆使用量将减少该因素。
一般情况下,您可以拥有 2 GB 的字符串而不会出现任何问题,因为它们适合您的 JVM 堆,并且在任何情况下,只要您有足够的 RAM,就可以为 JMeter 分配更多的堆,请参阅 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure文章了解更多详情。
需要post来自 Jmeter 的具有以下格式的负载,
示例 HTTP 负载:
[
{
"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 随机函数,长度如下,
def header = "${__RandomString(30500,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=,)}"
def payload = "${__RandomString(30500,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=,)}"
vars.put("headrer_payload",header);
vars.put("message_payload",payload);
我担心此脚本何时会 运行 更长时间 JMeter 有一个堆 space c运行ch。有没有更好的方法来处理这么大的字符串?无法减少长度。
Don't inline JMeter Functions or Variables into Groovy scripts, you can insert JMeter Functions directly into HTTP Request采样器的“Body数据”区域:
[
{
"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 请求采样器 body 将允许您避免在 JMeter 变量中保存 60 KB 的数据,因此堆使用量将减少该因素。
一般情况下,您可以拥有 2 GB 的字符串而不会出现任何问题,因为它们适合您的 JVM 堆,并且在任何情况下,只要您有足够的 RAM,就可以为 JMeter 分配更多的堆,请参阅 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure文章了解更多详情。