第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次/秒 |
转载:https://wenku.baidu.com/view/70685ea6a0116c175f0e48db.html