性能测试

Redis自带了一个叫 redis-benchmark的工具来模拟N个客户端同时发出M个请求,(类似于Apache ab程序),你可以使用redis-benchmark -h来查看基准参数。

Usage: redis-benchmark [-h ] [-p ] [-c ] [-n  [-k ]

-h       #指定服务器名称(default 127.0.0.1);
-p #指定服务器端口(default 6379);
-s #指定服务器Socket(overrides host and port);
-a #指定Redis密码;
-c #指定并行客户端数量 (default 50);
-n #指定总的请求数量(default 100000);
-d #指定SET/GET一次数据大小 (default 2 Bytes);
-dbnum #选择指定的数据库(default 0);
-k #保持一个连接,一台服务器来处理这些请求 (default 1);
-r #设置随机Key;
-P #Pipeline requests. Default 1 (no pipeline).
-q #显示每秒钟能处理多少请求数结果;
--csv #输出为CSV格式;
-l #Loop. Run the tests forever.
-I #Idle mode. Just open N idle connections and wait.

这里用redis自带的benchmark工具测试,由于twemproxy不支持ping命令,所以对于twemproxy只测试set, get, incr, lpush, lpop, sadd, spop, lpush, lrange_100, lrange_300, lrange_500, lrange_600,mset命令。

Redis单实例简单测试

1)客户端分别为1/1000/5000,总请求数为100000,Key大小为1k,针对set/get命令测试QPS和完成时间(服务器:CPU 64核,内存 64G)

# redis-benchmark -h 0.0.0.0 -p 6500 -c 1 -t set,get -d 1000
====== SET ======
100000 requests completed in 2.65 seconds #完成时间
1 parallel clients
1000 bytes payload
keep alive: 1 100.00% < = 0 milliseconds
37764.35 requests per second #每秒请求数 ====== GET ======
100000 requests completed in 1.70 seconds
1 parallel clients
1000 bytes payload
keep alive: 1 100.00% <= 0 milliseconds
58962.27 requests per second
# redis-benchmark -h 0.0.0.0 -p 6500 -c 1000 -t set,get -d 1000
====== SET ======
100000 requests completed in 0.75 seconds
1000 parallel clients
1000 bytes payload
keep alive: 1 0.00% < = 4 milliseconds
....................
100.00% <= 14 milliseconds
132450.33 requests per second ====== GET ======
100000 requests completed in 0.78 seconds
1000 parallel clients
1000 bytes payload
keep alive: 1 0.00% <= 3 milliseconds
..................
100.00% <= 8 milliseconds
128205.13 requests per second
# redis-benchmark -h 0.0.0.0 -p 6500 -c 5000 -t set,get -d 1000
====== SET ======
100000 requests completed in 1.18 seconds
5000 parallel clients
1000 bytes payload
keep alive: 1 0.00% < = 28 milliseconds
..........................
100.00% <= 105 milliseconds
84817.64 requests per second ====== GET ======
100000 requests completed in 1.24 seconds
5000 parallel clients
1000 bytes payload
keep alive: 1 0.00% <= 35 milliseconds
.......................
100.00% <= 55 milliseconds
80580.17 requests per second

下面提供一个CPU 8核,内存8G的压测结果。

root@shd-ops-mng1:~ # redis-benchmark -h 0.0.0.0 -p 6380 -c 1 -t set,get -d 1000
====== SET ======
100000 requests completed in 6.50 seconds
1 parallel clients
1000 bytes payload
keep alive: 1 98.95% < = 1 milliseconds
...................
100.00% <= 6 milliseconds
15379.88 requests per second ====== GET ======
100000 requests completed in 6.68 seconds
1 parallel clients
1000 bytes payload
keep alive: 1 98.91% <= 1 milliseconds
..................
100.00% <= 4 milliseconds
14965.58 requests per second
# redis-benchmark -h 0.0.0.0 -p 6380 -c 1000 -t set,get -d 1000
====== SET ======
100000 requests completed in 0.96 seconds
1000 parallel clients
1000 bytes payload
keep alive: 1 0.00% < = 4 milliseconds
....................
103734.44 requests per second ====== GET ======
100000 requests completed in 1.00 seconds
1000 parallel clients
1000 bytes payload
keep alive: 1 0.00% <= 3 milliseconds
...................
100.00% <= 15 milliseconds
100300.91 requests per second

默认情况下面,基准测试使用单一的key。在一个基于内存的数据库里, 单一key测试和真实情况下面不会有巨大变化。当然,使用一个大的key范围空间, 可以模拟现实情况下面的缓存不命中情况。

这时候我们可以使用-r命令。比如,假设我们想设置10万随机key连续SET 100万次,连接客户端分别为1/5/1000,我们可以使用下列的命令:

# redis-benchmark -h 0.0.0.0 -p 6500 -c 1 -r 100000 -q 1000000 -t set -d 1000 -q
1000000 -t set -d 1000 -q: 63051.70 requests per second # redis-benchmark -h 0.0.0.0 -p 6500 -c 1000 -r 100000 -q 1000000 -t set -d 1000 -q
1000000 -t set -d 1000 -q: 94966.77 requests per second # redis-benchmark -h 0.0.0.0 -p 6500 -c 5000 -r 100000 -q 1000000 -t set -d 1000 -q
1000000 -t set -d 1000 -q: 83542.19 requests per second
测试twemproxy
# redis-benchmark -h 0.0.0.0 -p 36379 -c 1 -t set,get -d 1000
====== SET ======
10000 requests completed in 1.08 seconds
1 parallel clients
1000 bytes payload
keep alive: 1 100.00% < = 0 milliseconds
9267.84 requests per second ====== GET ======
10000 requests completed in 1.08 seconds
1 parallel clients
1000 bytes payload
keep alive: 1 100.00% <= 0 milliseconds
9293.68 requests per second
# redis-benchmark -h 0.0.0.0 -p 36379 -c 1000 -t set,get -d 1000
====== SET ======
10000 requests completed in 0.18 seconds
1000 parallel clients
1000 bytes payload
keep alive: 1 0.01% < = 3 milliseconds
................
100.00% <= 20 milliseconds
55555.55 requests per second ====== GET ======
10000 requests completed in 0.21 seconds
1000 parallel clients
1000 bytes payload
keep alive: 1 0.01% <= 5 milliseconds
..............
100.00% <= 23 milliseconds
47393.37 requests per second
# redis-benchmark -h 0.0.0.0 -p 36379 -c 5000 -t set,get -d 1000
====== SET ======
10000 requests completed in 0.28 seconds
5000 parallel clients
1000 bytes payload
keep alive: 1 0.01% < = 28 milliseconds
.......................
100.00% <= 87 milliseconds
35587.19 requests per second ====== GET ======
10000 requests completed in 0.29 seconds
5000 parallel clients
1000 bytes payload
keep alive: 1 0.01% <= 33 milliseconds
....................
100.00% <= 85 milliseconds
34364.26 requests per second

Twemproxy和Redis性能压力测试的更多相关文章

  1. 【转】Web性能压力测试工具之ApacheBench(ab)详解

    PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...

  2. [AapacheBench工具]web性能压力测试工具的应用与实践

    背景:网站性能压力测试是性能调优过程中必不可少的一环.服务器负载太大而影响程序效率是很常见的事情,一个网站到底能够承受多大的用户访问量经常是我们最关心的问题.因此,只有让服务器处在高压情况下才能真正体 ...

  3. Web性能压力测试工具之ApacheBench(ab)详解

    PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...

  4. Web性能压力测试工具之Apache AB 详解

    下载安装地址: http://httpd.apache.org/download.cgi yum install httpd-tools http://www.apachelounge.com/dow ...

  5. Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程 - VPS侦探

    Web服务器性能/压力测试工具http_load.webbench.ab.Siege使用教程 - VPS侦探 http://soft.vpser.net/test/http_load/http_loa ...

  6. [转] Web性能压力测试工具之ApacheBench(ab)详解

    PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...

  7. 转:Web性能压力测试工具之ApacheBench(ab)详解

    PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...

  8. 记在VMware虚拟机中对网站进行性能压力测试的经历

    由于本次测试,仅仅是对静态网站首页进行的测试,所以没有涉及到MySQL数据库的性能监测 服务器基本配置 webbench测试工具 Linux上一款优秀的web性能压力测试工具.webbench最多可以 ...

  9. Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程

    Web服务器性能压力测试工具http_load.webbench.ab.Siege使用教程 作者: feng 日期: 2012/07/25 发表评论 (0) 查看评论   一.http_load 程序 ...

随机推荐

  1. MySQL大表DROP删除小技巧(转)

    在日常工作中,经常会遇到历史大表从主库上迁移到备份机,以便腾出主库空间,那么如果你直接drop table 后,可能会引起数据库抖动,连接数升高等问题,从而影响业务. 那么用一个小技巧,即可轻松平滑的 ...

  2. UltraISO 9.7.0.3476中文完美破解安装版

    https://cn.ultraiso.net/uiso9_cn.exe 简体中文版专用:        注册名:Guanjiu 注册码:A06C-83A7-701D-6CFC 多国语言版专用: 注册 ...

  3. Elemet-技巧

    <el-table-column prop="> </el-table-column> 效果: append-to-body 解决el-dialog 弹窗遮罩为题 & ...

  4. 字符串转 多行 ,判断给定一组id ,查库中不存在用

    SELECT REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i') AS STR     FROM DUAL   CONNECT BY LEVEL < ...

  5. JQuery 获取页面某一元素在屏幕上的位置

    获取页面某一元素的绝对X,Y坐标 var X = $('#ElementID').offset().top;//元素在当前视窗距离顶部的位置 var Y = $('#ElementID').offse ...

  6. cocos2d-x JS 四人麻将中的服务器位置与客户端位置转换相关

    前言:在写各类游戏编程中,都会遇到一个问题,就是位置问题,服务端的位置是与客户端的位置是不同的,这中间需要进行一个转化,客户端一套代码运行,不管是任何人登陆,该位置始终都是在屏幕正下方,所以这样就要进 ...

  7. vue中使用base64和md5

    1.在项目根目录下安装 cnpm install --save js-base64 cnpm install --save js-md5 2.在项目文件中引入 import md5 from 'js- ...

  8. mongodb对数组元素及内嵌文档进行增删改查操作(转)

    from:https://my.oschina.net/132722/blog/168274 比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下: &l ...

  9. Android -- 使用WindowManager实现悬浮框效果

    1,原文在这里http://blog.csdn.net/qq_17250009/article/details/52908791,我只是把里面的关键步骤给注释了一下,首先来看一下我们的效果,如图(电脑 ...

  10. Eclipse + Pydev问题 : pydev unresolved import

    http://blog.csdn.net/qq_22765745/article/details/71054030http://blog.csdn.net/amghost/article/detail ...