使用redis-benchmark测试Redis性能
针对DCS Redis实例的性能评估,比如测试某种实例规格的set或get在某个高并发场景下的性能,可参考本文的测试方法。
测试工具
Redis客户端源码包含一个名为redis-benchmark的性能测试工具,它可以模拟N个客户端同时向Redis发送M条查询命令的应用场景。
redis-benchmark工具的使用方法请参考redis-cli和redis-benchmark测试工具介绍。
测试步骤
- 创建Redis缓存实例。
- 创建3台弹性云服务器(ECS),ECS选择与实例相同可用区、VPC、子网和安全组。
如果是测试单机或主备实例,创建1台ECS即可。
- 在每台ECS上安装redis-benchmark。安装步骤参考下载与安装工具。
- 每台ECS上执行测试命令。
redis-benchmark -h {IP} -p {Port} -a {password} -n {nreqs} -r {randomkeys} -c {connect_number} -d {datasize} -t {command}
参数参考值:-c {connect_number}:200,-n {nreqs}:10000000,-r {randomkeys}:1000000,-d {datasize}:32。
- -h表示实例的域名连接地址或IP地址。
- -p表示实例的端口,默认为6379。
- -a表示实例的连接密码,免密连接的实例无需输入-a {password}。
- -t表示执行具体测试命令合集。例如只测试set命令时,使用-t set;如果要测试ping、get、set命令,则使用 -t ping,set,get,命令间使用“,”分隔。
- -c表示客户端连接数。
- -d表示单条数据大小,单位Byte。
- -n表示测试包数量。
- -r表示使用随机key数量。
- 不断调整客户端连接数,执行4,得到每秒最大操作数。
- 取3台测试ECS得到的每秒操作数总和,即为对应规格的性能数据。
如果测试Redis集群,建议每台测试ECS各开启两个benchmark客户端。
- redis-benchmark 测试cluster集群实例时需要加 --cluster 参数,其他实例类型不需要加。
- 如果想对cluster集群的最大连接数进行性能压测,但是压测到1万连接时程序退出,或者报错 Cannot assign requested address。这说明是测试用的ECS本机性能不足,请先检查自己是否只用了1台ECS进行压测。想要对集群压测,建议准备3台ECS,每台ECS起3个redis-benchmark来测试redis实例的最大连接数。