背景:
最近业务方面优化了关键应用的性能,并计划在测试环境进行暴力性压测,以评估当前应用能否支撑未来几年业务的发展。测试过程中,不单单是应用本身的压测,还涉及一些中间件的性能测试,而其中尤为重要的缓存中间件 “ Redis ” 的性能在当前场景能支撑多少OPS还未可知,需要执行进一步的压测!这里简单记录下Redis自带的压测工具redis-benchmark的使用。
1. Redis-Benchmark
1.1 工具介绍:
redis-benchmark 是Redis官方自带的对Redis进行基准测试的工具,在Redis的安装目录下可以找到这个工具,并且可以获得该工具的具体用法。
[root@active_sentinel bin]# redis-benchmark -h
redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]
-h <hostname> 指定服务器主机名 (默认 127.0.0.1)
-p <port> 指定服务器端口 (默认 6379)
-s <socket> 指定服务器 socket
-a <password> Redis 认证密码
-c <clients> 指定并发连接数 (默认 50)
-n <requests> 指定请求数 (默认 100000)
-d <size> 以字节的形式指定 SET/GET 值的数据大小 (默认3)
--dbnum <db> 选择指定的数据库号 (默认 0)
--threads <num> 启用多线程模式
--cluster cluster启用集群模式
--enable-tracking 启动基准测试前发送客户端跟踪
-k <boolean> 1=keep alive 0=reconnect (默认 1)
-r <keyspacelen> SET/GET/INCR 使用随机 key, SADD 使用随机值
-P <numreq> 通过管道传输 <numreq> 请求 (默认1,没有管道)
-e 如果服务器返回错误,在stdout中显示
-q 退出,仅显示 query/sec 值
--csv 以 CSV 格式输出
-l 生成循环,永久执行测试
-t <tests> 仅运行以逗号分隔的测试命令列表
-I Idle 模式,仅打开 N 个 idle 连接并等待
1.2 压测示例:
1.2.1 10个并发连接,10万个 set,get,hset,hget 请求,请求100byte大小循环执行:
redis-benchmark -h 127.0.0.1 -p 6379 -c 10 -n 1000000 -d 100 -t set,get,hset,hget -l
1.2.2 测试期间,只需关注Redis的OPS与机器CPU的变化即可: