redis-benchmark 压测参数
参数 | 参数说明 |
---|---|
-h | redis 连接地址 |
-p | redis端口号,不写默认为6379,tls默认为6479 |
-a | redis 实例的用户账号密码,无密码时可不写。如果是default账号,直接写<paasword> 即可。如果是新创建的账号,则填写<user>:<password> |
-n | 测试的总请求数,可设置较大的值以持续压测 |
-r | 随机使用key数量,即使用多少个不同Key |
-c | 并发的客户端连接数 |
-d | SET或GEt所操作的值的结果大小,单位为字节(Byte) |
-t | 需要执行的测试命令,如SET、GET |
--threads |
启动多线程压测,并指定线程个数 |
--cluster |
启动集群模式压测,测试整个redis cluster |
--tls | 启用安全TLS连接 |
--cert | 用于进行身份验证的客户端证书 |
--key | 用于进行身份验证的私钥文件 |
--cacert | 用于验证的CA证书文件 |
redis-benchmark 测试指标
指标 | 说明 |
---|---|
QPS | 表示每秒处理的操作数,单位为次(秒) |
安装redis-benchmark工具
[root@k8s-02 opt]# wget https://download.redis.io/releases/redis-6.2.5.tar.gz
[root@k8s-02 redis-6.2.5]# tar xf redis-6.2.5.tar.gz && cd redis-6.2.5
[root@k8s-02 redis-6.2.5]# make && make install
安装完成后在src目录下生成redis-benchmark二进制
redis-benchmark 常见压测案例
这里我们已经创建好redis-cluster,我们在k8s节点上直接执行,进行压测工作
[root@k8s-01 ~]# kubectl get svc -n redis
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redis-cluster ClusterIP 10.96.64.112 <none> 6379/TCP 49d
具体压测数据 10GB测试数据,set 1024字节数据,启动32个线程、512连接、100000个key的取值范围
[root@k8s-node2 redis-6.2.5]# ./src/redis-benchmark -h 10.96.64.112 -p 6379 -n 10000000 -r 100000 -c 512 -t set -d 1024 --threads 32 --cluster -a redis123
Cluster has 3 master nodes:
Master 0: 35af7e1463aec91be23dec0266682ac0b52da262 10.244.1.12:6379
Master 1: f5039b4035bbc66f0562efdd2e91bc4a28064d4f 10.244.1.10:6379
Master 2: 14813ef24b9f5ca34151ed6eaad21af1f885d6c9 10.244.2.109:6379
SET: rps=90000.0 (overall: 36413.7) avg_msec=7.698 (overall: 13.670))6))
...
#因为我这里是E5服务器,我们等待压测完毕即可
#上面的相关参数可以参考上面的参数表,这里不再过多解释
在压测过程中,我们可以明显的看到redis-cluster使用资源的占用情况
Kubernetes Helm快速部署Redis Cluster & Redisinsight
我这里没有配置redis-cluster pod资源限制,所以redis-cluster pod是动态扩容的方式
压测结果如下
根据图中压测结果,我们可以判断我们redis-cluster集群QPS(每秒请求)数值大概为29350.30
QPS详解: QPS即每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。QPS = req/sec = 请求数/秒,即每秒的响应请求数,也即是最大吞吐能力