在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:pika开源软件地址:https://gitee.com/baotiao/pika开源软件介绍:Pika简介 EnglishPika是一个可持久化的大容量redis存储服务,兼容string、hash、list、zset、set的绝大部分接口(兼容详情),解决redis由于存储数据量巨大而导致内存不够用的容量瓶颈,并且可以像redis一样,通过slaveof命令进行主从备份,支持全同步和部分同步,pika还可以用在twemproxy或者codis中来实现静态数据分片(pika已经可以支持codis的动态迁移slot功能,目前在合并到master分支,欢迎使用,感谢作者left2right和fancy-rabbit提交的pr) Pika用户特点
使用二进制包使用用户可以直接从releases下载最新的二进制版本包直接使用. 编译使用1.在编译机上安装snappy,glog,CentOS系统可以用yum安装,Ubuntu可以用apt-get安装。如是CentOS系统,执行如下命令: yum install snappy-devel glog-devel 2.安装g++(若没有安装), 在CentOS上执行如下命令: yum install gcc-c++ 3.把gcc版本临时切换到4.8(若已是,则忽略), 在CentOs上执行如下命令: a. sudo wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo b. sudo yum install -y devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ c. scl enable devtoolset-2 bash 4.获取源代码 git clone https://github.com/Qihoo360/pika.git && cd pika 5.切换到最新release版本 a. 执行 git tag 查看最新的release tag,(如 v2.2.5) b. 执行 git checkout TAG切换到最新版本,(如 git checkout v2.2.5) 6.编译 make 若编译过程中,提示有依赖的库没有安装,则有提示安装后再重新编译 注:我们推荐使用TCMalloc来进行内存管理 使用 ./output/bin/pika -c ./conf/pika.conf 清空编译 如果需要清空编译内容,视不同情况使用一下两种方法其一: 1. 执行make clean来清空pika的编译内容 2. 执行make distclean来清空pika及所有依赖的编译内容(一般用于彻底重新编译) 性能 (感谢deep011提供性能测试结果)注!!!本测试结果是在特定环境特定场景下得出的,不能够代表所有环境及场景下的表现,仅供参考。 推荐大家在使用pika前在自己的环境根据自己的使用场景详细测试以评估pika是否满足要求 测试环境CPU型号:Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz CPU线程数:56 MEMORY:256G DISK:3T flash NETWORK:10GBase-T/Full * 2 OS:centos 6.6 Pika版本:2.2.4 压测工具测试一测试目的测试在pika不同worker线程数量下,其QPS上限。 测试条件pika数据容量:800G value:128字节 CPU未绑定 测试结果说明:横轴Pika线程数,纵轴QPS,value为128字节。set3/get7代表30%的set和70%的get。 结论从以上测试图可以看出,pika的worker线程数设置为20-24比较划算。 测试二测试目的测试在最佳worker线程数(20线程)下,pika的rtt表现。 测试条件pika数据容量:800G value:128字节 测试结果====== GET ====== 10000000 requests completed in 23.10 seconds 200 parallel clients 3 bytes payload keep alive: 199.89% <= 1 milliseconds100.00% <= 2 milliseconds100.00% <= 3 milliseconds100.00% <= 5 milliseconds100.00% <= 6 milliseconds100.00% <= 7 milliseconds100.00% <= 7 milliseconds432862.97 requests per second ====== SET ====== 10000000 requests completed in 36.15 seconds 200 parallel clients 3 bytes payload keep alive: 191.97% <= 1 milliseconds99.98% <= 2 milliseconds99.98% <= 3 milliseconds99.98% <= 4 milliseconds99.98% <= 5 milliseconds99.98% <= 6 milliseconds99.98% <= 7 milliseconds99.98% <= 9 milliseconds99.98% <= 10 milliseconds99.98% <= 11 milliseconds99.98% <= 12 milliseconds99.98% <= 13 milliseconds99.98% <= 16 milliseconds99.98% <= 18 milliseconds99.99% <= 19 milliseconds99.99% <= 23 milliseconds99.99% <= 24 milliseconds99.99% <= 25 milliseconds99.99% <= 27 milliseconds99.99% <= 28 milliseconds99.99% <= 34 milliseconds99.99% <= 37 milliseconds99.99% <= 39 milliseconds99.99% <= 40 milliseconds99.99% <= 46 milliseconds99.99% <= 48 milliseconds99.99% <= 49 milliseconds99.99% <= 50 milliseconds99.99% <= 51 milliseconds99.99% <= 52 milliseconds99.99% <= 61 milliseconds99.99% <= 63 milliseconds99.99% <= 72 milliseconds99.99% <= 73 milliseconds99.99% <= 74 milliseconds99.99% <= 76 milliseconds99.99% <= 83 milliseconds99.99% <= 84 milliseconds99.99% <= 88 milliseconds99.99% <= 89 milliseconds99.99% <= 133 milliseconds99.99% <= 134 milliseconds99.99% <= 146 milliseconds99.99% <= 147 milliseconds100.00% <= 203 milliseconds100.00% <= 204 milliseconds100.00% <= 208 milliseconds100.00% <= 217 milliseconds100.00% <= 218 milliseconds100.00% <= 219 milliseconds100.00% <= 220 milliseconds100.00% <= 229 milliseconds100.00% <= 229 milliseconds276617.50 requests per second 结论get/set 响应时间 99.9%都在2ms以内。 测试三测试目的在pika最佳的worker线程数下,查看各命令的极限QPS。 测试条件pika的worker线程数:20 key数量:10000 field数量:100(list除外) value:128字节 命令执行次数:1000万(lrange除外) 测试结果PING_INLINE: 548606.50 requests per secondPING_BULK: 544573.31 requests per secondSET: 231830.31 requests per secondGET: 512163.91 requests per secondINCR: 230861.56 requests per secondMSET (10 keys): 94991.12 requests per secondLPUSH: 196093.81 requests per secondRPUSH: 195186.69 requests per secondLPOP: 131156.14 requests per secondRPOP: 152292.77 requests per secondLPUSH (needed to benchmark LRANGE): 196734.20 requests per secondLRANGE_10 (first 10 elements): 334448.16 requests per secondLRANGE_100 (first 100 elements): 50705.12 requests per secondLRANGE_300 (first 300 elements): 16745.16 requests per secondLRANGE_450 (first 450 elements): 6787.94 requests per secondLRANGE_600 (first 600 elements): 3170.38 requests per secondSADD: 160885.52 requests per secondSPOP: 128920.80 requests per secondHSET: 180209.41 requests per secondHINCRBY: 153364.81 requests per secondHINCRBYFLOAT: 141095.47 requests per secondHGET: 506791.00 requests per secondHMSET (10 fields): 27777.31 requests per secondHMGET (10 fields): 38998.52 requests per secondHGETALL: 109059.58 requests per secondZADD: 120583.62 requests per secondZREM: 161689.33 requests per secondPFADD: 6153.47 requests per secondPFCOUNT: 28312.57 requests per secondPFADD (needed to benchmark PFMERGE): 6166.37 requests per secondPFMERGE: 6007.09 requests per second 结论整体表现很不错,个别命令表现较弱(LRANGE,PFADD,PFMERGE)。 测试四测试目的Pika与Redis的极限QPS对比。 测试条件pika的worker线程数:20 key数量:10000 field数量:100(list除外) value:128字节 命令执行次数:1000万(lrange除外) Redis版本:3.2.0 测试结果文档联系方式QQ群:294254078 |
请发表评论