第1章 限制条件
前一周所做的分布缓存技术预言中有包括ehcache、memcache、redis、tair,还包括了基于MongoDB的分布式技术。测试中,考虑到各自功能的差异化特点,其中选择了memcache、redis、tair功能特性相近的缓存服务器进行性能对比,所以ehcache、MongoDB将不做为本次测试的规范,其原因如下:
1) Ehcache是组件级别的缓存,要搭建一个独立的缓存服务器,需要用到ehcache server模块,这是个war包,能运行在web 容器中,决定整个缓存服务器性能的好坏因素太多,比如web服务器,集群方式等。跟memcache、redis、tair没有对比性。
2) MongoDB是面向文档的数据库,跟缓存没有可比性。
第2章 测试场景概述
性能测试包括单机环境和分布式环境,主要针对memcache、redis、tair各缓存服务器在缓存了不同级别的数据下,多个线程并发操作向缓存set/get缓存数据,考虑到 络方面的负载,又将每次set/get操作的缓存数据的大小分为三个不同的级别:1KB,10KB,100KB,通过对上述的条件进行排列,取得以下的测试场景。
第3章 单机环境测试
3.1. 测试场景:
1. 当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
2. 在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
3. 并发200个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。
4. 并发200个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。
3.2. 测试环境
|
机器 |
操作系统 |
软件版本 |
数量 |
Memcached |
10.19.90.74:11211 |
|
1.4.15 |
1 |
redis |
10.19.90.77: 6379 |
|
redis-2.6.14 |
1 |
tair |
Config_server 10.19.90.75:5198 Data_server 10.19.90.76:5191 |
|
2013-10-24 |
2 |
3.3. 测试结果
1. 当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
缓存服务器 |
第一次(缓存对象1KB) |
第二次(缓存对象10KB) |
第二次(缓存对象100KB) |
memcached |
905次/秒 |
390.717次/秒 |
406次/秒 |
redis |
1179次/秒 |
451.04次/秒 |
88次/秒 |
tair |
634次/秒 |
350次/秒 |
271次/秒 |
2. 在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
缓存服务器 |
第一次(缓存对象1KB) |
第二次(缓存对象10KB) |
第二次(缓存对象100KM) |
memcache |
850次/秒 |
201次/秒 |
393次/秒 |
redis |
1260次/秒 |
452次/秒 |
96次/秒 |
tair |
285次/秒 |
285次/秒 |
230次/秒 |
3. 在场景一完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。
缓存服务器 |
第一次(缓存对象1KB) |
第二次(缓存对象10KB) |
第二次(缓存对象100KB) |
memcache |
9510次/秒 |
7500次/秒 |
3470次/秒 |
redis |
10835次/秒 |
5651次/秒 |
–超时 |
tair |
8857次/秒 |
3940次/秒 |
1890次/秒 |
4. 在场景三完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。
缓存服务器 |
第一次(缓存对象1KB) |
第二次(缓存对象10KB) |
第二次(缓存对象100KB) |
memcache |
10239次/秒 |
6758次/秒 |
3483次/秒 |
redis |
11430次/秒 |
5392次/秒 |
983次/秒 |
tair |
9932次/秒 |
4392次/秒 |
1012次/秒 |
第4章 分布式环境测试
4.1. 测试场景:
1. 当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
2. 在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
3. 在场景一完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。
4. 在场景三完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。
4.2. 分布式环境
memcache
机器 |
操作系统 |
软件版本 |
数量 |
10.19.90.74:11211 |
|
1.4.15 |
1 |
10.19.90.75:11211 |
|
1.4.15 |
1 |
10.19.90.76:11211 |
|
1.4.15 |
1 |
10.19.90.77:11211 |
|
1.4.15 |
1 |
tair configserver
机器 |
操作系统 |
软件版本 |
数量 |
10.19.90.75:5198 |
|
2013-10-24 |
1 |
tair dataserver
机器 |
操作系统 |
软件版本 |
数量 |
10.19.90.74:5191 |
|
2013-10-24 |
1 |
10.19.90.75:5191 |
|
2013-10-24 |
1 |
10.19.90.76:5191 |
|
2013-10-24 |
1 |
10.19.90.77:5191 |
|
2013-10-24 |
1 |
redis
机器 |
操作系统 |
软件版本 |
数量 |
10.19.90.74:6379 |
|
redis-2.6.14 |
1 |
10.19.90.75: 6379 |
|
redis-2.6.14 |
1 |
10.19.90.76: 6379 |
|
redis-2.6.14 |
1 |
10.19.90.77: 6379 |
|
redis-2.6.14 |
1 |
4.3. 测试结果
1. 当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
缓存服务器 |
第一次(缓存对象1KB) |
第二次(缓存对象10KB) |
第二次(缓存对象100KB) |
memcache |
850次/秒 |
472次/秒 |
259次/秒 |
redis |
979次/秒 |
426次/秒 |
178次/秒 |
tair |
697次/秒 |
363次/秒 |
184次/秒 |
2. 在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
缓存服务器 |
第一次(缓存对象1KB) |
第二次(缓存对象10KB) |
第二次(缓存对象100KM) |
memcache |
840次/秒 |
345次/秒 |
385次/秒 |
redis |
978次/秒 |
590次/秒 |
436次/秒 |
tair |
701次/秒 |
307次/秒 |
283次/秒 |
3. 在场景一完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。
缓存服务器 |
第一次(缓存对象1KB) |
第二次(缓存对象10KB) |
第二次(缓存对象100KB) |
memcache |
25783次/秒 |
22893次/秒 |
19826次/秒 |
redis |
28457次/秒 |
15279次/秒 |
2826次/秒 |
tair |
17382次/秒 |
14890次/秒 |
4930次/秒 |
4. 在场景三完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。
缓存服务器 |
第一次(缓存对象1KB) |
第二次(缓存对象10KB) |
第二次(缓存对象100KB) |
memcache |
25783次/秒 |
20893次/秒 |
9676次/秒 |
redis |
39991次/秒 |
18735次/秒 |
2794次/秒 |
tair |
15432次/秒 |
13723次/秒 |
3214次/秒 |
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!