利用Jmeter对redis进行性能测试及redis压测命令

时间:2024-01-10 00:59:39 标签:  JMeter  redis  数据库  

利用Jmeter对redis进行性能测试

  • 测试工具准备
    • 第一种方式:插件 目前未跑通
      • jmeter使用redis数据
    • 第二种方式:jar
      • 读取测试
      • 写入测试
  • redis压力测试命令

测试工具准备

Jmeter作为当前非常受欢迎的接口测试和性能测试的工具,在企业中得到非常广泛的使用,而redis作为缓存数据库,也在企业中得到普遍使用,那如何使用jmeter来测试redis数据库呢?

本文讲述如何使用jmeter来调用redis,对redis进行读写操作,其他操作也可参考本文。

Jmeter准备
下载地址:https://jmeter.apache.org/

第一种方式:插件 目前未跑通

由于jmeter本身并没有带有redis的测试入口,我们需要去安装redis插件。
插件地址:https://jmeter-plugins.org/
首先,我们下载jmeter-plugins-manager-1.6.jar文件,放到jmeter的lib的ext文件夹中,然后重启jmeter。

然后,在‘选项’菜单下,点击‘plugin manager’,打开插件管理弹窗,选择‘Available Plugins’,在搜索框中,输入 redis
在这里插入图片描述
然后,选中‘Redis Data Set’,点击‘Apply Changes and Restart JMeter’
带自动下载redis所需的依赖后重启jmeter。
然后,在jmeter的线程组上右键,添加 > 配置元件 > jp@gc - Redis Data Set
在这里插入图片描述
此时,已经可以通过jmeter配置连接redis数据库了。如果你已经有了redis数据库,那你就直接可以在当前的界面中进行相关的配置,如果你还没有redis数据库,就需要安装redis数据库。

jmeter使用redis数据

在RedisDataSet中配置相关信息
在这里插入图片描述
Data Configuration
Redis key:Redis中的key,Redis数据库中列表(有序数据)或集(无序数据)的名称
Variable Names:由数据集导出到测试元素的变量的名称(设置取出来的value存放在哪个变量中)
Delimiter:存储在Redis列表或集合中的行中使用的分隔符(取出的value有多个值时,变量名之间的分隔符)
Date Sources Type:数据源类型,有List、Set两种选择
Recycle data on Flase: 数据是否重复使用

Connection Configuration
Redis server host:Redis服务器IP地址
Redis server port:Redis服务端口
Timeout for connect in ms: 连接超时时间,默认2000 ms
Password for connection:连接Redis的密码
Database:数据库名称,连接Redis的第几个数据库,默认为0

Redis Pool Configuration

字段用法默认值
minldle至少有多少个处于空闲状态的redis实例0
maxldle一个线程池最多有多少个处于空闲状态的redis实例10
maxActive控制一个pool可分配多少个redis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态就成exhausted20
maxWait表示当borrow一个redis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisconnectionException30000
whenExhaustedAction表示当pool中的redis实例都被allocated完时,pool要采取的操作;默认有三种WHEN_EXHAUSTED_FAIL(表示无redis实例时,直接抛出NoSuchElementException) . WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException) . WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用)False
testOnBorrow在borrow一个redis实例时,是否提前进行alidate操作;如果为true,则得到的redis实例均是可用的False
testOnReturn在return给pool时,是否提前进行validate操作False
testWhileldle如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义False
timeBetweenEvictionRunsMillis表示idle object evitor两次扫描之间要sleep的毫秒数30000
numTestsPerEvictionRun表示idle object evitor每次扫描的最多的对象数0
minEvictableldleTimeMillis表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义60000
softMinEvictableldleTimeMillis在minEvictableldleTimeMillis基础上,加入了至少minldle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableldleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义60000

第二种方式:jar

直接下载依赖jar,下载后导入Jmeter安装目录的lib目录下,可先查看是否有jedis依赖的jar包,若有无需再下载。
jedis:https://mvnrepository.com/artifact/redis.clients/jedis/3.6.3

jedispool:https://mvnrepository.com/artifact/org.apache.commons/commons-pool2/2.9.0

读取测试

创建BeanShell取样器
脚本内容:

import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import org.apache.commons.lang3.StringUtils;
 
String host = "127.0.0.1"; //服务器地址
 
int port = 6739; //端口号
 
String password = "password"; //redis密码
 
int index = 0; //redis db,默认为0
 
String key = "8841"; //key值,需要读取数据的键值
 
Jedis jedis = new Jedis(host, port);
 
if(StringUtils.isNotBlank(password)){
jedis.auth(password);
}
 
jedis.select(index); //选择redis  db
 
String value= jedis.get(key);  //通过key值获取对应value
 
vars.put("code",value);  //将获取的value值保存到jmeter变量code中

在这里插入图片描述

写入测试

创建JSR223 Sampler取样器
脚本内容:

import redis.clients.jedis.Jedis;
 
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.auth("password");
jedis.set("8841","bar");
String value = jedis.get("8841");

在这里插入图片描述

redis压力测试命令

1.redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000(100个并发连接,100000个请求)
2.redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100(存取大小为100字节的数据包)
3.redis-benchmark -t set, lpush -n 100000 -q (只测试某些操作的性能)
4.redis-benchmark -n 100000 -q script load “redis.call(set,‘foo’,‘bar’)(只测试某些数值存取的性能)
来源:https://blоg.сsdn.nеt/qq_42317054/аrtiсlе/dеtаils/131530853

智能推荐

准备 Jmeter有两种运行方式:一种是上面采用的界面模式

标签:JMeter  性能测试  JMeter  性能测试  压力测试  

目录  文章目录         jdk,jmeter下载安装

标签:压力测试  JMeter  

前言 Apache JMeter是Apache组织开发的基于Java的压力测试工

标签:搬砖历险  JMeter  压力测试  

背景 之前两篇内容介绍了一下 WebS

标签:JMeter  Websocket  压力测试  

第一次测试 准备工作 在测试计划下添加jp@gc -

标签:性能测试  JMeter  压力测试  

1.我首先创建一个线程组

标签:JMeter  压力测试  

一、什么是压力测试 软件测试中:压力测试(Stres

标签:压力测试  JMeter  功能测试  Selenium  测试工具  测试用例  单元测试  

一、什么是压力测试 软件测试中:压力测试(Stress Te

标签:自动化测试  软件测试  压力测试  JMeter  单元测试  测试工具  Selenium  

 jmeter是apache公司基于java开发的一款开源压力测试工具,体积小&#xf

标签:软件测试  自动化测试  JMeter  压力测试  功能测试  开发语言  测试用例  

1.1 常用组件以及参数介绍 1.1

标签:JMeter  压力测试  

目录 一、下载安装及使

标签:测试工具  JMeter  压力测试  单元测试  

 单线程的Redis一向以简洁高效著称,但也有其阿喀琉斯之踵:阻塞!单个线程在最容易产生瓶颈的网络读写(Redis大key,也包括其他一些重量级的操作sort/sunion/zunionstore/sdiff,集中性的expired key清理,内存溢出的maxmemory-policy策略等)请求完成之前,其他所有请求都将会被阻塞,严重影响其效率,因此Redis的多线程呼声就越来越高。由于是基于内存的操作延迟非常低,所以即便是单线程模式下CPU资源也不会是的瓶颈。最容易出现瓶颈的还是网络IO操作。在Redis 6.0开始支持多线程之后,所谓的多线程也只是socket层面的多线程,核心的内存读写还是单线程模式。弄清楚了多线程的本质之后,就会有一系列的问题,多线程会比单线程

标签:多线程  性能测试  redis  

使用内网负载机(Linux)执行JMeter性能测试目录使用内网负载机(Linux)执行JMeter性能测试一、背景二、准备三、假设四、操作步骤1、连接负载机2、检查环境3、测试准备(1)Java安装(链接下载)(2)JMeter安装(文件传输)4、调试脚本5、修改host6、配置运行脚本

标签:内网  性能测试  载机  JMeter  linux  

一、使用场景         CPU压力测试         内

标签:linux  压力测试  运维  

jmeter是apache公司基于java开发的一款开源压力测试工具,体积小&#xff

标签:自动化测试  技术分享  软件测试  JMeter  压力测试  自动化测试  软件测试  测试工程师  

猜你喜欢

 📢专注于分享软件测试干货内容&#xff0c

标签:JMeter  压力测试  功能测试  测试用例  软件测试  自动化测试  面试  

JMeter 性能测试实例1. 实验目的熟悉 Badboy + JMeter 的自动化测试流程2. 实验内容2.1 使用 Badboy 录制脚本2.2 使用 JMeter 进行性能测试2.3 分析测试结果3. 实验步骤3.1 下载图 1 所示的文件并解压

标签:性能测试  实例  JMeter  

性能测试概要性能测试是软件测试中的一种,它可以衡量系统的稳定性、扩展性、可靠性、速度和资源使用。它可以发现性能瓶颈,确保能满足业务需求。很多系统都需要做性能测试,如Web应用、数据库和操作系统等。性能测试种类非常多,有些概念也很相近:Load TestingBaseline TestingSmoke Testing

标签:分布式  性能测试  步骤  测试  详细  

性能测试概要 性能测试是软件测试中的一种,它可以衡量系统的稳定性、扩展性、可靠性

标签:自动化测试  JMeter  分布式  网络  单元测试  

一、什么是压力测试 软件测试中:压力测试(Stres

标签:Jmeter专栏  压力测试  测试工具  

      首先就JMeter工具而言,它不仅可以做压力测试,还可以做性

标签:压力测试  JMeter  

前言:   本文主要针对http接口进行测试,使用Jme

标签:软件测试  自动化测试  技术分享  JMeter  

  问题背景 在使用 JMeter 压测时,发现同一后端服务,在单机 500 并发下,HTTP 和 HTTPS 协议压测 RT 差距非常大。同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在 JMeter 施压客户端。

标签:性能  JMeter  压测  https  

为什么需要分布式?在工作中经常需要对一些关键接口做高QPS的压测,JMeter是由Java 语言开发,没创建一个线程(虚拟用户),JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并发。所以,通过JMeter实现分布式,可以整合多台主机的硬件资源,实现同时对被测试接口进行压力测试。Jmeter分布式测试环境中有两个角色:Master 和

标签:分布式  docker  JMeter  

目录前言1. Key(键)1.1 键的基本操作功能del move rename renamenx migrate1.2 键的获取功能type exists randomkey keys1.3 键的排序功能sort asc/desc/alpha/by/limit/get/store1.4 生存时间的功能expire pexpire expireat persist ttl pttl1.5 序列化与反序列化的功能du

标签:示例  常用命令  redis  API  

一、理解jmeter 官网-Apache JMeter-Apache JMete

标签:前端  前端  jemeter  

性能测试基础 一、性能测

标签:服务器  java  负载均衡  

相关问题

相关文章

热门文章

推荐文章

相关标签