Groovy 如何在Jmeter中使用spool
我想用jmeter加载测试redis。我已经有了一个使用groovy脚本的JSR223采样器Groovy 如何在Jmeter中使用spool,groovy,redis,jmeter,jedis,Groovy,Redis,Jmeter,Jedis,我想用jmeter加载测试redis。我已经有了一个使用groovy脚本的JSR223采样器 import redis.clients.jedis.Jedis; import java.util.concurrent.ThreadLocalRandom; String varuser = "user:" + ThreadLocalRandom.current().nextInt(1, 500); Jedis jedis = new Jedis(IP, port); String result
import redis.clients.jedis.Jedis;
import java.util.concurrent.ThreadLocalRandom;
String varuser = "user:" + ThreadLocalRandom.current().nextInt(1, 500);
Jedis jedis = new Jedis(IP, port);
String result = jedis.hgetAll(varuser);
SampleResult.setResponseData(result.toString().getBytes());
在包含10个“用户”的线程组下。很好。现在我想把“用户”的数量提高到1000。高连接数会对性能产生负面影响,对吗?所以我想获得连接池的优势。据
这就是答案。我的问题是我的jmeter测试计划应该是什么样子?我必须将jmeter元素(哪一个?)放在何处才能创建一个spool?不是在我的线程组下,对吗?以及如何在上面的采样器脚本中使用池中的连接
编辑
因此,使用Dmitris Advice,我创建了两个不同的测试计划。两者都不起作用。也许有人看到了我的错误
第一个计划:
测试计划
|---设置线程组
def pool = new JedisPool(new JedisPoolConfig(), 'localhost')
props.put('pool', pool)
----|---JSR223取样器(1)
|---螺纹组
def pool = new JedisPool(new JedisPoolConfig(), 'localhost')
props.put('pool', pool)
----|---JSR223取样器(2)
|---查看结果树
使用JSR223取样器(1)
和JSR223取样器(2)
我的第二个测试计划看起来像
测试计划
|---螺纹组
----|---测试动作
--------|---JSR223预处理器
----|---JSR223取样器
----|---查看结果树
使用类似于上述JSR223采样器(1)的预处理器和类似于上述JSR223采样器(2)的JSR223采样器
第一个计划附带了响应消息
cannot cast object 'redis.clients.jedis.JedisPool@642715fb' with class
'redis.clients.jedis.JedisPool' to class 'redis.clients.jedis.Jedis'
第二个计划作出回应
no such property: pool for class: Script41082
我做错了什么?我建议您在某个地方使用(如果您想测量池创建时间)或采样器和组合(如果您不想将池创建请求包括在测试结果中)来创建一个测试 完成后,您可以将此“池”放入JMeter属性中,如:
def pool = new JedisPool(new JedisPoolConfig(), 'localhost')
props.put('pool', pool)
def pool = props.get('pool')
有关在JMeter测试中使用Groovy脚本的更多信息,请参阅文章。您将从属性中获取
JedisPool
,并尝试将其强制转换为Jedis
,这是不可能的,您需要从JedisPool.getResource()获取Jedis
:
非常感谢你!像(1)测试计划(2)测试操作(3)JSR223预处理创建池(2)JSR223预处理使用连接(2)一些监听器?我编辑了我的问题。。。如果您能审阅,我将非常高兴:)
import redis.clients.jedis.JedisPool;
....
JedisPool pool = props.get('pool');
Jedis jedis = pool.getResource();