所以,我的问题看看我的Jmeter设置:
让我解释一下发生了什么,然后继续我的问题。
解释 在服务器上,我有一个guava缓存(超时为5秒)和一个连接到它的数据库。请求A将数据(从csv文件读取)发送到服务器并将其放入缓存中。它返回与该数据对应的唯一ID。请求B发送一个秒请求(具有该唯一ID),该请求将项目从缓存中逐出并保存到DB。第三个请求C再次使用该唯一ID从DB读取并处理数据。
现在,为了在线程组之间共享该唯一ID(和一些其他URL参数),我将它们放在Jmeter的队列中(使用jp @ gc - 线程间通信预处理器和PostProcessor)。所有工作都应该像Jmeter和Server一样。
问题 为了完成这个设置,我需要再添加一个...对于每个请求A只需要将10%(随机)的唯一ID放入队列A中。并且对于每个请求B再次只有10%(随机)那些唯一的ID需要放在队列B中。 如果Jmeter不允许将if-controllers作为http请求的一部分放入,那么如何才能完成最后一部分呢?
答案 0 :(得分:1)
如果有人对答案感兴趣。我发现最简单的方法是在Http请求A下创建一个随机变量(在变量rnd
中)和一个beanshell后处理器.beanhell代码是:
import kg.apc.jmeter.modifiers.FifoMap;
if (vars.get("rnd").equals("1")) {
FifoMap.getInstance().put("QUEUE_A", "${uniqueId");
}
对于请求B,类似于请求A的过程。工作正常。
答案 1 :(得分:0)
您是否尝试在http-request之外使用线程间通信PostProcessor - 对于instanse,在http-request之后放置的“Simple Controller”中?在这种情况下,您可以使用任何逻辑控制器(如果,吞吐量等)