JMeter - IBM MQ -为高吞吐量测试发送唯一数据

laximzn5  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(213)

我在JMeter测试计划中为多线程和高吞吐量测试(最多40个请求/秒)生成唯一数据时遇到了问题。
我在测试脚本中添加了以下方法:

  • 包含可变格式的用户参数,例如:${__RandomString(6,ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789)},${__timeShift(yyMMddHHHmm,,P5 D,,)}具有不同长度变化
  • 使用以下格式的JSR 223预处理器:vars.put(“randomtext”,UUID.randomUUID().toString().replace('-','').substring(0,30));
  • 随机变量,最小值设置为“111111111”,最大值设置为“999999999”。并且“Per Thread(user)= True”。

我已经在请求体的不同段中为单个脚本使用了所有这些变量类型。然而,当我运行一个有50个线程的测试时(在测试开始时创建了一个100个连接的池),30秒的加速和60秒的持续时间,仍然有重复的消息报告在消息遍历的Pod的日志中。因此,它们不会出现在队列中。
我还可以尝试其他什么方法来确保每个请求都是唯一的并满足吞吐量要求?

lhcgjxsq

lhcgjxsq1#

6个字符的随机字母数字字符串为您提供2,176,782,336个唯一组合。
如果它足够用于您的测试,您可以使用setUp Thread Group和JSR223 Sampler预生成值

def size = 10000 // or how many unique lines you need

def list = new HashSet<String>()

while (list.size() < size) {
    list.add(org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric(6))
}

list.each { line ->
    new File('randomStrings.csv') << line.toUpperCase() << System.getProperty('line.separator')
}

然后在主线程组中使用CSV数据集配置并将此randomStrings.csv馈送给它。
同样,您也可以处理其他参数。

相关问题