测试环境和命令:
- 阿里云VPC环境, 4 x (1核, 2G ECS) 用于运行codis proxy
- codis proxy后端slot均衡的接2个或4个阿里云redis实例
- 内网SLB连接4个codis proxy
- 只单纯测试单条读写, 命令如下:
./redis-benchmark -a <auth-passwd> -h <slb-addr> -c 64 -n 500000 -P 100 -r 1048576 -d 256 -t get,set
测试结果:
Spec. | ValueSize(byte) | ops(SET) | ops(GET) |
---|---|---|---|
直连1G 主从版redis | 256 | 15.0w | 35.9w |
直连1G 主从版redis | 1024 | 9.4w | 13.0w |
直连1G 主从版redis | 2048 | 5.1w | 13.1w |
直连2G 主从版redis | 256 | 12.7w | 18.1w |
直连2G 主从版redis | 1024 | 7.0w | 9.0w |
直连2G 主从版redis | 256 | 3.8w | 6.3w |
codis接2x1G 主从版redis | 256 | 12w | 8w |
codis接4x1G 主从版redis | 256 | 26w | 16w |
codis接4x1G 主从版redis | 1024 | 8w | 4w |
codis接4x1G 主从版redis | 2048 | 4w | 2w |
codis接2x2G 主从版redis | 256 | 15w | 12w |
直连4G主从高配版redis | 256 | 15.5w | 40w |
直连4G主从高配版redis | 1024 | 7.8w | 20.2w |
直连4G主从高配版redis | 2048 | 4.5w | 9.5w |
直连8G主从版redis | 256 | 13.1w | 10.6w |
直连8G主从版redis | 1024 | 8.3w | 3.5w |
直连8G主从版redis | 2048 | 4.7w | 1.7w |
直连16G主从版redis | 256 | 12.6w | 6.0w |
直连16G主从版redis | 1024 | 8.3w | 3.0w |
直连16G主从版redis | 2048 | 5.0w | 2.7w |
直连16G集群版redis | 256 | 26.9w | 23.8w |
直连16G集群版redis | 1024 | 9.4w | 19.7w |
直连16G集群版redis | 2048 | 4.8w | 11.6w |
直连16G主从高配版redis | 256 | 15.5w | 37.3w |
直连16G主从高配版redis | 1024 | 8.8w | 14.9w |
直连16G主从高配版redis | 2048 | 4.7w | 8.6w |
直连32G集群版redis | 256 | 41.8w | 45.3w |
直连32G集群版redis | 1024 | 10.1w | 28.8w |
直连32G集群版redis | 2048 | 5.5w | 18.0w |
直连128G集群版redis | 256 | 52.3w | 45.3w |
直连128G集群版redis | 1024 | 10.7w | 33.1w |
直连128G集群版redis | 2048 | 5.5w | 29.0w |
测试结论:
- redis主从版实例写入性能明显优于读取性能, 猜测读性能应该是aliyun做的流量限制?
- codis的读写性能随后端节点数量是线性的, 等同于单个后端redis节点性能 * 节点数目
- codis需要额外ecs计算资源部署codis proxy, 不过对于扩展性和写入性能要求较高的场景, 使用codis集群的方法比较合适 ( 注意:如果用云数据库redis版作为codis后端,是无法水平扩容的 )
- 16G主从版和8G主从版相比,读写性能没有明显提升
- 和主从版相比,16G集群版写性能略有提升,比较巧合的是写的性能基本等于(codis接4 x 1G redis)的性能, 由于不是redis3的客户端集群选择方式, 猜测aliyun集群版采用了与codis类似的实现?
- 16G集群版的读性能是主从版的4倍,如果不需要消息队列功能,只用来做键值存储的话,集群版更具性价比
- 128G集群版的带宽规格和节点数规格是32G和16G集群的一倍,但是并没有带来预期的1倍的IOPS性能提升,特别是对于写操作大包数据
- 16G高配版的读写性能接近16G集群版;其标称的内网带宽上限是48MByte, 但实测结果达到了140MByte(14.9*10000/1024)
- 回过头来看以前主从版的数据,结合标称的内网带宽上限, 读性能往往受内网带宽上限限制, 而写性能则看起来不受此限制,写性能通常大于读性能
- 重新测试1G主从和2G主从, 1G的性能明显优于2G