环境分别为单机跨物理机内网,集群跨物理机内网,集群跨物理机公网。
整体部署如下(引用上文的图,下面部署与其类似):
twemproxy配置:
twemproxy 共计两台,配置基本一致,并且部署在同一台物理机上,算法一致,它可以保证从任何一个入口,都能获取相同的值。
redis配置,以25041为例:
机器配置:
71,73为物理机,内网测试机;
CPU E5-2609 0 @ 2.40GHz 8核
172,183为云主机,外网,为实际生产环境。
CPU E5-2650(2.0GHz) 8CPU 24G sda 40G+100G storage
以SET 治疗为例,先测试在不同环境下,并发数,数据长度,执行次数对性能的影响,其他指令后续分别测试,测试工具redis-benchmark.
以下为部分测试结果:
(1) 内网,不使用集群
(2) 内网,使用集群
(3) 外网,使用集群
结论:
(1) 并发数到达一定数量时,性能最高,之前递增,之后影响不大;
(2) 数据长度越小性能越高,当数据大于一定长度时,每秒执行次数低于1000了;
(3) 执行次数对结果基本无影响;
(4) 相同并发数,集群与非集群结果相差不大;相同数据长度,集群的性能要高;数据长度越长,提高并发数,一定程度上可以提高每秒处理次数;
(5) 内网外网环境相同条件下,结果相差比较大,外网更接近于生产环境; 1000并发,1024bytes长度,每秒处理次数约为30000.
(6) 其他,再继续测试吧!
备注:内外网集群中已有部分数据,为外网生产环境导入,更接近于实际情况();
内网:
外网:
使用twemproxy,其使用某些算法对键值进行hash,每个 redis节点上都是完整的数据,通过
twemproxy访问数据时,实际上为访问其中的某个节点,因此,性能上来说,应该不会有什么太大损失。
redis 集群性能测试以及与单机性能对比(1)
原文:http://blog.chinaunix.net/uid-8625039-id-4745864.html