访次: AmazingCounters.com 次

Redis QPS测试

 

1、计算qps:

1)redis发布版本中自带了redis-benchmark性能测试工具,可以使用它计算qps。示例:使用100个并发连接,发出100000个请求,每个请求的数据为2kb,测试host为127.0.0.1端口为6379的redis服务器性能:

/usr/bin/redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000 -d 2

 

复制代码
====== PING_INLINE ======
  100000 requests completed in 2.70 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

7.31% <= 1 milliseconds
32.79% <= 2 milliseconds
96.13% <= 3 milliseconds
99.85% <= 4 milliseconds
100.00% <= 4 milliseconds
36982.25 requests per second

====== PING_BULK ======
  100000 requests completed in 2.19 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

40.74% <= 1 milliseconds
53.82% <= 2 milliseconds
99.17% <= 3 milliseconds
99.96% <= 4 milliseconds
100.00% <= 5 milliseconds
100.00% <= 5 milliseconds
45599.63 requests per second

====== SET ======
  100000 requests completed in 2.61 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

27.14% <= 1 milliseconds
55.97% <= 2 milliseconds
99.05% <= 3 milliseconds
99.96% <= 4 milliseconds
100.00% <= 5 milliseconds
100.00% <= 5 milliseconds
38328.86 requests per second

====== GET ======
  100000 requests completed in 3.49 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

0.12% <= 1 milliseconds
45.66% <= 2 milliseconds
98.73% <= 3 milliseconds
99.87% <= 4 milliseconds
99.96% <= 5 milliseconds
99.97% <= 6 milliseconds
99.98% <= 7 milliseconds
100.00% <= 7 milliseconds
28645.09 requests per second

====== INCR ======
  100000 requests completed in 2.90 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

0.65% <= 1 milliseconds
9.45% <= 2 milliseconds
97.14% <= 3 milliseconds
99.71% <= 4 milliseconds
99.82% <= 5 milliseconds
99.89% <= 6 milliseconds
99.91% <= 7 milliseconds
99.98% <= 8 milliseconds
100.00% <= 8 milliseconds
34530.39 requests per second

====== LPUSH ======
  100000 requests completed in 2.36 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

22.02% <= 1 milliseconds
89.68% <= 2 milliseconds
99.92% <= 3 milliseconds
100.00% <= 4 milliseconds
42337.00 requests per second

====== RPUSH ======
  100000 requests completed in 3.10 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

43.54% <= 1 milliseconds
55.87% <= 2 milliseconds
99.31% <= 3 milliseconds
99.90% <= 4 milliseconds
99.95% <= 5 milliseconds
100.00% <= 5 milliseconds
32310.18 requests per second

====== LPOP ======
  100000 requests completed in 2.49 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

1.21% <= 1 milliseconds
61.49% <= 2 milliseconds
99.46% <= 3 milliseconds
100.00% <= 3 milliseconds
40128.41 requests per second

====== RPOP ======
  100000 requests completed in 2.73 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

24.75% <= 1 milliseconds
72.17% <= 2 milliseconds
99.57% <= 3 milliseconds
100.00% <= 3 milliseconds
36656.89 requests per second

====== SADD ======
  100000 requests completed in 3.45 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

5.84% <= 1 milliseconds
43.47% <= 2 milliseconds
97.75% <= 3 milliseconds
99.65% <= 4 milliseconds
99.87% <= 5 milliseconds
99.95% <= 6 milliseconds
99.99% <= 7 milliseconds
100.00% <= 8 milliseconds
100.00% <= 8 milliseconds
28960.32 requests per second

====== HSET ======
  100000 requests completed in 3.66 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

12.75% <= 1 milliseconds
32.22% <= 2 milliseconds
95.79% <= 3 milliseconds
99.40% <= 4 milliseconds
99.83% <= 5 milliseconds
99.96% <= 6 milliseconds
100.00% <= 6 milliseconds
27285.13 requests per second

====== SPOP ======
  100000 requests completed in 2.67 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

13.85% <= 1 milliseconds
35.88% <= 2 milliseconds
98.10% <= 3 milliseconds
99.73% <= 4 milliseconds
99.93% <= 5 milliseconds
99.98% <= 6 milliseconds
100.00% <= 7 milliseconds
100.00% <= 7 milliseconds
37425.15 requests per second

====== LPUSH (needed to benchmark LRANGE) ======
  100000 requests completed in 2.88 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

5.27% <= 1 milliseconds
49.51% <= 2 milliseconds
99.16% <= 3 milliseconds
99.82% <= 4 milliseconds
99.99% <= 5 milliseconds
100.00% <= 5 milliseconds
34686.09 requests per second

====== LRANGE_100 (first 100 elements) ======
  100000 requests completed in 2.58 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

30.03% <= 1 milliseconds
56.98% <= 2 milliseconds
99.46% <= 3 milliseconds
100.00% <= 3 milliseconds
38729.67 requests per second

====== LRANGE_300 (first 300 elements) ======
  100000 requests completed in 2.27 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

3.56% <= 1 milliseconds
99.29% <= 2 milliseconds
99.97% <= 3 milliseconds
100.00% <= 3 milliseconds
43994.72 requests per second

====== LRANGE_500 (first 450 elements) ======
  100000 requests completed in 2.00 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

61.48% <= 1 milliseconds
93.69% <= 2 milliseconds
99.69% <= 3 milliseconds
99.96% <= 4 milliseconds
100.00% <= 4 milliseconds
49975.02 requests per second

====== LRANGE_600 (first 600 elements) ======
  100000 requests completed in 2.64 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

2.13% <= 1 milliseconds
38.87% <= 2 milliseconds
98.63% <= 3 milliseconds
99.73% <= 4 milliseconds
99.79% <= 5 milliseconds
99.95% <= 6 milliseconds
99.99% <= 7 milliseconds
100.00% <= 7 milliseconds
37864.45 requests per second

====== MSET (10 keys) ======
  100000 requests completed in 2.79 seconds
  100 parallel clients
  2 bytes payload
  keep alive: 1

0.07% <= 1 milliseconds
57.01% <= 2 milliseconds
92.43% <= 3 milliseconds
99.84% <= 4 milliseconds
100.00% <= 5 milliseconds
35816.62 requests per second
View Code
复制代码

我们关注结果最后一行:每秒35816.62个请求,既QPS4.4万;但这里的数据都只是测试数据,测出来的QPS不能代表实际生产的处理能力

 

2)测算redis处理实际生产请求的QPS/TPS

在实际生产中,我们需要关心这个指标,在我们的应用场景中,redis能够处理的最大的(QPS/TPS)是多少?测量redisQPS的方式有两种:

估计生产的报文大小,使用benchmark工具指定-d数据块大小来模拟;
使用redis-cli中info统计信息计算差值;redis-cli的info命令中有一项total_commands_processed表示:从启动到现在处理的所有命令总数,可以通过统计两次info指令间的差值来计算QPS:
 

watch -n 60'redis-cli -a MROhwkCyaGZbCrMTLAg2  info|grep total_commands_processe >> qps2.txt && date >>qps2.txt'

 

把每分钟的total_commands_processe记录到qps2.txt,打上时间戳得到数据两两相减,除以60秒。

 

注意:这个实时数据,存在波峰波谷,要采样几次,每次一段时间,这样才比较准。所以,一般使用下面命令

nohup watch -n 60'redis-cli -a MROhwkCyaGZbCrMTLAg2  info|grep total_commands_processe >> qps2.txt && date >>qps2.txt' > log 2>&1 &

 


2、内存使用情况:

redis是内存数据库,直接看info里的相关参数即可


used_memory:832784 # Redis 分配的内存总量 
used_memory_human:813.27K 
used_memory_rss:1896448 # Redis 分配的内存总量(包括内存碎片) 
used_memory_peak:832760  
used_memory_peak_human:813.24K #Redis所用内存的高峰值

 

3、redis连接数:

redis是内存数据库,直接看info里的相关参数即可

# Clients
connected_clients:28

posted @   IT老登  阅读(11)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
访次: AmazingCounters.com 次
点击右上角即可分享
微信分享提示