Codis集群测试

1 测试说明

1.1 背景

当前IM架构设计与之前相比有很大不同,当前IM将所有状态信息保存在数据层,它的设计假设是数据层高可用,高性能,可扩容;目前IM数据层采用redis集群Codis搭建。

1.2 目标

以下测试针对单机redis和Codis进行测试,通过对比分析得到IM数据层的扩容能力,测试出影响redis扩容性能的关键因素;

2 测试环境

测试环境

服务器配置:32core 256G内存 450G硬盘;

内网:1000Mb带宽;

客户机配置: 32core 256G内存 450G硬盘;

测试注意

3 Codis存储集群搭建

4 数据层测试用例

4.1 测试单机redis

4.1.1 测试部署图

4.1.2 测试过程

(1)将客户端部署在机器172.31.68.32上,将Redis实例部署在机器172.31.68.33;

(2)客户端分别启动1、2、5…200个线程,每个线程建立一个Redis的连接;

(3)客户端在每个连接上执行10000次Set操作,并且Set操作的key每次都不相同;

(4)记录相应的测试结果;

4.1.3 测试结果

客户端线程数

Redis实例个数

耗时s

Tps

1

1

0.563414

17748

2

1

0.97494

20514

5

1

0.998326

50083

10

1

1.29937

76960

20

1

1.68946

118381

50

1

2.58544

193391

100

1

5.21364

191804

200

1

9.97938

200413

4.1.4 结论

根据测试结果,Redis单机性能访问速度最快为20万条/秒,并且只有在TCP连接数在50个连接以上时,才能充分发挥出Redis全部性能。

4.2 测试Codis集群(1个Codis-Redis-Group)

4.2.1 访问1个Codis-Proxy

4.2.1.1 测试部署图

4.2.1.2 测试过程

(1)将客户端部署在机器172.31.68.32上,将Codis集群部署在机器172.31.68.33;

(2)客户端分别启动1、2、5…200个线程,每个线程建立1个Redis的连接,连接到Codis-Proxy_1;

(3)客户端在每个连接上执行10000次Set操作,并且Set操作的key每次都不相同;

(4)记录相应的测试结果以及Codis Manager记录的最大TPS;

4.2.1.3 测试结果

客户端线程数

codis个数

Redis实例个数

耗时ms

Tps

1

1

1

1.88489

5265

2

1

1

2.14388

9328

5

1

1

2.38993

20921

10

1

1

2.97356

33629

20

1

1

3.48968

57311

50

1

1

4.74195

105442

100

1

1

5.26867

189801

150

1

1

6.08102

246669

200

1

1

7.19117

278119

4.2.1.4 CPU图


4.2.1.5 性能图

Codis Manager最大访问次数截图:29万次/秒

4.2.2 访问2个Codis-Proxy

4.2.2.1 测试部署图

4.2.2.2 测试过程

(1)将客户端部署在机器172.31.68.32上,将Codis集群部署在机器172.31.68.33;

(2)客户端分别启动1、2、5…200个线程,每个线程建立2个Redis的连接,分别连接到Codis-proxy_1和Codis-proxy_2;

(3)客户端在每个连接上执行5000次Set操作,并且Set操作的key每次都不相同;

(4)同时启动5个客户端;

(5)记录CodisManager记录的最大TPS;

4.2.2.3 CPU图

4.2.2.4 性能图

4.2.3 结论

1个Redis组成+1个Codis的存储集群,极限性能为29万次/秒。

1个Redis组成+2个Codis的存储集群,极限性能为36.5万次/秒。

补充:

在1个Codis-Redis-Group+1个Codis-Proxy的情况下,采用10个客户端同时启动,进行测试,结果证明,Codis-Redis-Group的CPU占用率最高79%,基本没有增长,说明,已经到达1个Codis-Proxy的极限性能。

在1个Codis-Redis-Group+2个Codis-Proxy的情况下,采用10个客户端同时启动,进行测试,结果证明,Codis-Redis-Group的CPU占用率最高90%,基本没有增长,说明已经到达系统的极限性能;

4.3 测试Codis集群(2个Codis-Redis-Group)

4.3.1 访问2个Codis-Proxy

4.3.1.1 测试部署图

4.3.1.2 测试过程

(1)将客户端部署在机器172.31.68.32上,将Codis集群部署在机器172.31.68.33;

(2)客户端分别启动1、2、5…200个线程,每个线程建立2个Redis的连接,分别连接到Codis-proxy1和Codis-proxy2;

(3)客户端在每个连接上执行5000次Set操作,并且Set操作的key每次都不相同;

(4)同时启动5个客户端;

(5)记录CodisManager记录的最大TPS;

4.3.1.3 CPU图

4.3.1.4 性能图

5个客户端测试得到的最大性能:42万次/秒。

4.3.2 访问3个Codis-Proxy

4.3.2.1 测试部署图

4.3.2.2 测试过程

(1)将客户端部署在机器172.31.68.32上,将Codis集群部署在机器172.31.68.33;

(2)客户端分别启动1、2、5…200个线程,每个线程建立3个Redis的连接,分别连接到Codis-proxy1和Codis-proxy2和Codis-proxy3;

(3)客户端在每个连接上执行3333次Set操作,并且Set操作的key每次都不相同;

(4)同时启动10个客户端;

(5)记录CodisManager记录的最大TPS;

4.3.2.3 CPU图

4.3.2.4 性能图

10个客户端测试得到的最大性能:46万次/秒。

4.3.3 访问6个Codis-Proxy

4.3.3.1 测试部署图

4.3.3.2 测试过程

(1)将客户端部署在机器172.31.68.32上,将Codis集群部署在机器172.31.68.33;

(2)客户端分别启动1、2、5…200个线程,每个线程建立6个Redis的连接,分别连接到Codis-proxy1和Codis-proxy2和Codis-proxy3、Codis-proxy4、Codis-proxy5、Codis-proxy6;

(3)客户端在每个连接1666上执行次Set操作,并且Set操作的key每次都不相同;

(4)同时启动10个客户端;

(5)记录CodisManager记录的最大TPS;

4.3.3.3 CPU图

 

4.3.3.4 性能图

10个客户端测试得到的最大性能:52万次/秒。

4.3.4 结论

2个Redis组成+2个Codis的存储集群,极限性能为42.6万次/秒。

2个Redis组成+3个Codis的存储集群,极限性能为46万次/秒。

2个Redis组成+6个Codis的存储集群,极限性能为52万次/秒。

 

4.4 测试Codis集群(3个Codis-Redis-Group)

4.4.1 访问3个Codis-Proxy

4.4.1.1 测试部署图

4.4.1.2 测试过程

(1)将客户端部署在机器172.31.68.32上,将Codis集群部署在机器172.31.68.33;

(2)客户端分别启动1、2、5…200个线程,每个线程建立3个Redis的连接,分别连接到3个Codis-Proxy上;

(3)客户端在每个连接上执行3333次Set操作,并且Set操作的key每次都不相同;

(5)分别启动10个客户端同时进行测试;

(6)记录Codis Manager显示的最大TPS。

4.4.1.3 CPU图

4.4.1.4 性能图

同时开启5个客户端测试得到的最大性能:46.9万次/秒。

4.4.2 访问6个Codis-Proxy

4.4.2.1 测试部署图

 

4.4.2.2 测试过程

(1)将客户端部署在机器172.31.68.32上,将Codis集群部署在机器172.31.68.33;

(2)客户端分别启动1、2、5…200个线程,每个线程建立6个Redis的连接,分别连接到6个Codis-Proxy上;

(3)客户端在每个连接上执行1666次Set操作,并且Set操作的key每次都不相同;

 (5)分别启动10个客户端同时进行测试;

(6)记录Codis Manager显示的最大TPS。

4.4.2.3 CPU图

Cpu占用总量为27.15%

4.4.2.4 性能图

4.4.3 结论

3个Codis-Redis-Group组成+3个Codis-Proxy的存储集群,极限性能为46万次/秒。

3个Codis-Redis-Group组成+6个Codis-Proxy的存储集群,极限性能为61万次/秒。

5 总结

访问Codis集群性能,与以下因素存在关系:

第一个客户端与Codis-Proxy的TCP连接数量;单个Codis-Proxy的TCP连接数量越多,整体访问速度越快。

第二个客户端同时访问Codis-Proxy的数量;Codis-Proxy配置数量越多,整体访问速度越快;

第三个Codis-Redis-Group的数量;Codis-Redis-Group配置数量越多,整体访问速度越快;

从性能扩展角度:

每增加一个Codis-Redis-Group,系统整体性能确实会有所提高,但是提高的能力越来越有限,需要建立大量的TCP连接以及扩展多个Codis-Proxy才能尽量地提高系统访问速度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值