Redis 性能测试

2020-09-21  本文已影响0人  _大叔_

服务器环境

参数 linux指令
系统 cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core)
内存 free -h total:3.7G available:3.0G
CPU数量 cat /proc/cpuinfo cpu cores : 2
HZ cat /proc/cpuinfo |grep MHz|uniq cpu MHz : 2100.000

Redis 之 redis-benchmark

redis 提供了 redis-benchmark 工具便于我们做性能测试,可以使用 redis-benchmark- h 查看参数。

命令 描述 默认值
-h <hostname> 指定服务器主机名 127.0.0.1
-p <port> 指定服务器端口 6379
-s <socket> 指定服务器 socket
-a <password> Redis 认证密码
-c <clients> 指定并发连接数 50
-n <requests> 指定请求数 10000
-d <size> 以字节(Byte)的形式指定 SET/GET 值的数据大小 3
--dbnum <db> 选择 Redis 数据库编号 0
--threads <num> 启用多线程模式 redis6以上才有
-k <boolean> 是否保持连接 1=keep alive 0=reconnect 1
-r <keyspacelen> SET/GET/INCR 使用随机 KEY ,SADD 使用随机值
-P <numreq> 默认情况下,Redis 客户端一次请求只发起一个命令。通过 -P 参数,可以设置使用 pipelining功能,一次发起指定个请求,从而提升 QPS 1
-e 如果 Redis Server 返回错误,是否将错误打印出来。默认情况下不打印,通过该参数开启
-q 强制退出 redis。仅显示 query/sec 值
--csv 以 CSV 格式输出
-l (L) 生成循环,永久执行测试
-t <tests> 指定需要测试的 Redis 命令,多个命令通过逗号分隔。想测试 SET/GET 命令,则可以 -t SET,GET 来指定
-I (i) Idle 模式。仅打开 N 个 idle 连接并等待。

Docker Redis测试

单并发测试

测试命令

./redis-benchmark -c 1 -n 20000 -d 30720 -t set,get

测试结果每秒是 8000+的QPS

多并发测试
====== SET ======
  20000 requests completed in 1.06 seconds
  10 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
18903.59 requests per second
====== GET ======
  20000 requests completed in 1.30 seconds
  10 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
15360.98 requests per second

接下来测试 -P 命令

====== SET ======
  20007 requests completed in 0.47 seconds
  50 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
42933.48 requests per second
====== GET ======
  20002 requests completed in 0.44 seconds
  50 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
45253.39 requests per second

redis6 安装版测试

单并发测试
====== SET ======
  200000 requests completed in 20.20 seconds
  1 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
9900.01 requests per second
====== GET ======
  200000 requests completed in 20.01 seconds
  1 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
9995.50 requests per second
多并发测试
====== SET ======
  200000 requests completed in 3.00 seconds
  10 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
66622.25 requests per second
====== GET ======
  200000 requests completed in 3.02 seconds
  10 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
66137.57 requests per second

-P 测试

单并发测试
====== SET ======
  200000 requests completed in 2.20 seconds
  1 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
90991.81 requests per second
====== GET ======
  200000 requests completed in 2.15 seconds
  1 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
92980.01 requests per second
多并发测试
====== SET ======
  200010 requests completed in 0.42 seconds
  10 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
480793.25 requests per second
====== GET ======
  200000 requests completed in 0.34 seconds
  10 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
586510.25 requests per second

换服务器测试

参数 linux指令
系统 cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core)
内存 free -h total:3.6G ,available:782M
CPU数量 cat /proc/cpuinfo cpu cores : 1
HZ cat /proc/cpuinfo |grep MHz|uniq cpu MHz : 2500.002

Docker Redis

单并发测试
====== SET ======
  20000 requests completed in 1.22 seconds
  1 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
16420.36 requests per second
====== GET ======
  20000 requests completed in 1.42 seconds
  1 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
14094.43 requests per second
多并发测试
====== SET ======
  20000 requests completed in 0.66 seconds
  10 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
30395.14 requests per second
====== GET ======
  20000 requests completed in 0.81 seconds
  10 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
24721.88 requests per second

-P 测试

单并发测试
====== SET ======
  20000 requests completed in 0.59 seconds
  1 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
33726.81 requests per second
====== GET ======
  20000 requests completed in 0.50 seconds
  1 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
39682.54 requests per second
多并发测试
====== SET ======
  20008 requests completed in 0.31 seconds
  10 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
64750.81 requests per second
====== GET ======
  20017 requests completed in 0.27 seconds
  10 parallel clients
  30720 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
73591.91 requests per second

Redis 安装版

单并发
====== SET ======
  200000 requests completed in 7.21 seconds
  1 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
27735.40 requests per second
====== GET ======
  200000 requests completed in 7.06 seconds
  1 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
28312.57 requests per second
多并发
====== SET ======
  200000 requests completed in 2.31 seconds
  10 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
86730.27 requests per second
====== GET ======
  200000 requests completed in 2.29 seconds
  10 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
87221.98 requests per second

-P 测试

单并发
====== SET ======
  200000 requests completed in 0.89 seconds
  1 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
223964.16 requests per second
====== GET ======
  200000 requests completed in 0.81 seconds
  1 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
247524.75 requests per second
多并发
====== SET ======
  200000 requests completed in 0.29 seconds
  10 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
687285.19 requests per second
====== GET ======
  200000 requests completed in 0.27 seconds
  10 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no
751879.69 requests per second

明显可以看出 换了一台的服务器,CPU没有上一台多,可用内存剩余少,单单只是HZ不一样,但结果相差甚大。
其他运行测试,当一台32G的内存服务器,Redis跑到 7G 的时候 QPS 从 20W+ 一路下跌,跑到31G的时候QPS大约为 3W+。(这个大家可以自测 把 -d 值给大就行)

上一篇下一篇

猜你喜欢

热点阅读