Redis压测工具redisbenchmark

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工具

  1. <span>[</span> <span>root@k8s</span> <span>-</span> <span>02</span> <span> opt</span> <span>]#</span> <span> wget https</span> <span>:</span> <span>//download.redis.io/releases/redis-6.2.5.tar.gz</span>
  2. <span>[</span> <span>root@k8s</span> <span>-</span> <span>02</span> <span> redis</span> <span>-</span> <span>6.2</span> <span>.</span> <span>5</span> <span>]#</span> <span> tar xf redis</span> <span>-</span> <span>6.2</span> <span>.</span> <span>5.tar</span> <span>.</span> <span>gz </span> <span>&&</span> <span> cd redis</span> <span>-</span> <span>6.2</span> <span>.</span> <span>5</span>
  3. <span>[</span> <span>root@k8s</span> <span>-</span> <span>02</span> <span> redis</span> <span>-</span> <span>6.2</span> <span>.</span> <span>5</span> <span>]#</span> <span> make </span> <span>&&</span> <span> make install</span>

安装完成后在src目录下生成redis-benchmark二进制

redis-benchmark 常见压测案例

这里我们已经创建好redis-cluster,我们在k8s节点上直接执行,进行压测工作

  1. <span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> </span> <span>~]#</span> <span> kubectl </span> <span>get</span> <span> svc </span> <span>-</span> <span>n redis</span>
  2. <span>NAME TYPE CLUSTER</span> <span>-</span> <span>IP EXTERNAL</span> <span>-</span> <span>IP PORT</span> <span>(</span> <span>S</span> <span>)</span> <span> AGE</span>
  3. <span>redis</span> <span>-</span> <span>cluster </span> <span>ClusterIP</span> <span> </span> <span>10.96</span> <span>.</span> <span>64.112</span> <span> </span> <span><none></span> <span> </span> <span>6379</span> <span>/</span> <span>TCP </span> <span>49d</span>

具体压测数据 10GB测试数据,set 1024字节数据,启动32个线程、512连接、100000个key的取值范围

  1. <span>[</span> <span>root@k8s</span> <span>-</span> <span>node2 redis</span> <span>-</span> <span>6.2</span> <span>.</span> <span>5</span> <span>]#</span> <span> </span> <span>./</span> <span>src</span> <span>/</span> <span>redis</span> <span>-</span> <span>benchmark </span> <span>-</span> <span>h </span> <span>10.96</span> <span>.</span> <span>64.112</span> <span> </span> <span>-</span> <span>p </span> <span>6379</span> <span> </span> <span>-</span> <span>n </span> <span>10000000</span> <span> </span> <span>-</span> <span>r </span> <span>100000</span> <span> </span> <span>-</span> <span>c </span> <span>512</span> <span> </span> <span>-</span> <span>t </span> <span>set</span> <span> </span> <span>-</span> <span>d </span> <span>1024</span> <span> </span> <span>--</span> <span>threads </span> <span>32</span> <span> </span> <span>--</span> <span>cluster </span> <span>-</span> <span>a redis123</span>
  2. <span>Cluster</span> <span> has </span> <span>3</span> <span> master nodes</span> <span>:</span>
  3. <span>Master</span> <span> </span> <span>0</span> <span>:</span> <span> </span> <span>35af7e1463aec91be23dec0266682ac0b52da262</span> <span> </span> <span>10.244</span> <span>.</span> <span>1.12</span> <span>:</span> <span>6379</span>
  4. <span>Master</span> <span> </span> <span>1</span> <span>:</span> <span> f5039b4035bbc66f0562efdd2e91bc4a28064d4f </span> <span>10.244</span> <span>.</span> <span>1.10</span> <span>:</span> <span>6379</span>
  5. <span>Master</span> <span> </span> <span>2</span> <span>:</span> <span> </span> <span>14813ef24b9f5ca34151ed6eaad21af1f885d6c9</span> <span> </span> <span>10.244</span> <span>.</span> <span>2.109</span> <span>:</span> <span>6379</span>
  6. <span>SET</span> <span>:</span> <span> rps</span> <span>=</span> <span>90000.0</span> <span> </span> <span>(</span> <span>overall</span> <span>:</span> <span> </span> <span>36413.7</span> <span>)</span> <span> avg_msec</span> <span>=</span> <span>7.698</span> <span> </span> <span>(</span> <span>overall</span> <span>:</span> <span> </span> <span>13.670</span> <span>))</span> <span>6</span> <span>))</span>
  7. <span>...</span>
  8. <span>#因为我这里是E5服务器,我们等待压测完毕即可</span>
  9. <span>#上面的相关参数可以参考上面的参数表,这里不再过多解释</span>

在压测过程中,我们可以明显的看到redis-cluster使用资源的占用情况

我这里没有配置redis-cluster pod资源限制,所以redis-cluster pod是动态扩容的方式

压测结果如下

根据图中压测结果,我们可以判断我们redis-cluster集群QPS(每秒请求)数值大概为29350.30

QPS详解: QPS即每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。QPS = req/sec = 请求数/秒,即每秒的响应请求数,也即是最大吞吐能力