一、 测试目的
1) 测试Memcached与Redis,在key随机大小的情况下性能如何;
2) Memcached达到内存上限时,会根据LRU(Least Recently Used最近最少使用)算法置换掉老的数据,测试当出现这种情况时,其性能如何;
3) Redis达到内存上限时,会根据LRU算法,将高频key保存在内存,低频key转到交换文件,测试当出现这种情况时,其性能如何。
二、 测试环境
1、 网络环境
如图1所示,42、43均连接至千兆交换机,其中42为服务端,43为客户端:
图1
2、 硬件环境
IP | 型号 | OS | CPU | 内存 | 硬盘 | 网卡 | 用途 |
192.168.0.42 | HP刀片 | RedHat6.2 x86_64 | Intel(R) Xeon(R) E5410 @ 2.33GHz 8核 | 16G | 68G | 1000Mb/s | 被压机 |
192.168.0.43 | HP刀片 | RedHat6.2 x86_64 | Intel(R) Xeon(R) E5410 @ 2.33GHz 8核 | 16G | 68G | 1000Mb/s | 加压机 |
3、 软件环境
软件名称 | 软件版本 | 是否开源 |
memcached | v1.4.15 | 是 |
libevent | v2.0.21-stable | 是 |
redis | v2.6.5 | 是 |
三、 测试结果
在2到100字节范围内生成随机大小的key,加上10字节的value组成每条数据记录内容;每次操作线程数为50个,每线程10万条记录,在老数据基础上进行测试;老数据基础分别为0万、500万、1000万、1500万条……,依次类推每次测试增长500万条,分别测试insert、select、update情况;
因为Redis在写入8千万条时,开始启动虚拟内存,此时意味着物理内存不够用,再加上受快照持久化子进程同时抢占系统资源的影响性能出现拐点,在此拐点前其性能都与7千500万的情况差不多,所以性能曲线图将只描述7千500万后的测试情况;
Redis快照持久化过程如下:
1) 达到持久化条件,Redis调用fork创建一子进程;
redis doc2) 父进程继续维护自己的内存空间并同时处理client端的请求,而子进程负责将fork时刻整个数据库的一个快照写入到临时文件;
3) 当子进程将快照写入临时文件结束后,会用这个临时文件替换原来的快照文件,然后子进程退出;
注:每次快照持久化都是将内存数据完整的写入磁盘一次,并不是增量的同步数据;
1、 insert操作性能对比
1) 在老数据基础上,进行50个客户端并发,每客户端操作100,000次写,平均用时如图2-1、图2-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 99800.40 | 102796.05 | 100020.00 | 103950.10 | 105086.17 | 76405.87 | 104733.98 | 100260.68 |
redis | 69213.73 | 32784.74 | 37855.84 | 1964.88 | 1204.61 | 1032.06 | 636.27 | 396.13 |
图2-1
图2-2
说明:纵轴为平均用时(单位:次/秒),横轴为老数据基础(单位:千万);
2) CPU使用情况,如图3-1、图3-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 151.74 | 149.50 | 150.27 | 151.53 | 147.30 | 322.40 | 172.72 | 176.30 |
redis | 92.33 | 51.18 | 54.77 | 3.64 | 2.15 | 1.81 | 1.19 | 0.85 |
图3-1
图3-2
说明:纵轴为平均占用单个CPU百分比,横轴为老数据基础(单位:千万);
3) MEM使用情况,如图4-1、图4-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 66.70 | 70.98 | 75.00 | 79.14 | 83.32 | 88.90 | 89.91 | 89.91 |
redis | 78.37 | 77.44 | 77.51 | 70.20 | 63.14 | 64.95 | 62.92 | 52.86 |
图4-1
图4-2
说明:纵轴为占用内存平均百分比,横轴为老数据基础(单位:千万);
4) 每秒页面错误,如图5-1、图5-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
redis | 0.00 | 40.45 | 25.44 | 88.05 | 87.17 | 67.92 | 65.75 | 71.76 |
图5-1
图5-2
说明:纵轴为每秒产生的页面错误数,横轴为老数据基础(单位:千万);
5) 磁盘IO读情况,如图6-1、图6-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
redis | 0.00 | 1133.09 | 640.45 | 1765.67 | 1020.74 | 929.70 | 810.64 | 970.32 |
图6-1
图6-2
说明:纵轴为磁盘IO读的数量(单位:kB/s),横轴为老数据基础(单位:千万);
6) 磁盘IO写情况,如图7-1、图7-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
redis | 446.45 | 244.75 | 18.74 | 0.85 | 0.28 | 0.25 | 0.19 | 0.15 |
图7-1
图7-2
说明:纵轴为磁盘IO写的数量(单位:kB/s),横轴为老数据基础(单位:千万);
2、 select操作性能对比
1) 在老数据基础上,进行50个客户端并发,每客户端操作100,000次读,平均用时如图8-1、图8-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 104362.35 | 103541.11 | 104318.80 | 103584.01 | 105685.90 | 104668.20 | 104777.87 | 104362.35 |
redis | 84246.00 | 71357.21 | 26028.11 | 17028.81 | 1110.66 | 5135.26 | 4237.40 | 2439.39 |
图8-1
图8-2
说明:纵轴为平均用时(单位:次/秒),横轴为老数据基础(单位:千万);
2) CPU使用情况,如图9-1、图9-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 119.46 | 118.08 | 116.41 | 119.65 | 120.86 | 119.19 | 114.96 | 115.94 |
redis | 95.37 | 83.53 | 31.16 | 21.00 | 1.57 | 5.81 | 4.76 | 2.84 |
图9-1
图9-2
说明:纵轴为平均占用单个CPU百分比,横轴为老数据基础(单位:千万);
3) MEM使用情况,如图10-1、图10-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 68.76 | 72.89 | 77.02 | 81.14 | 85.27 | 89.91 | 89.91 | 89.91 |
redis | 73.97 | 72.42 | 73.12 | 62.06 | 51.97 | 52.81 | 26.05 | 42.23 |
图10-1
图10-2
说明:纵轴为占用内存平均百分比,横轴为老数据基础(单位:千万);
4) 每秒页面错误,如图11-1、图11-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
redis | 0.00 | 8.20 | 62.00 | 72.76 | 91.72 | 60.28 | 153.14 | 61.65 |
图11-1
图11-2
说明:纵轴为每秒产生的页面错误数,横轴为老数据基础(单位:千万);
5) 磁盘IO读情况,如图12-1、图12-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
redis | 0.00 | 2938.22 | 1803.65 | 2311.26 | 1256.08 | 1037.88 | 1670.56 | 1017.99 |
图12-1
图12-2
说明:纵轴为磁盘IO读的数量(单位:kB/s),横轴为老数据基础(单位:千万);
6) 磁盘IO写情况,如图13-1、图13-2示:
7.50 | 8.00 | 8.50 | 9.00 | 9.50 | 10.00 | 10.50 | 11.00 | |
memca | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
redis | 0.58 | 64124.22 | 0.51 | 0.38 | 0.16 | 0.26 | 0.32 | 0.20 |
图13-1
图13-2
说明:纵轴为磁盘IO写的数量(单位:kB/s),横轴为老数据基础(单位:千万);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论