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
我们关注结果最后一行:每秒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
本文来自博客园,作者:IT老登,转载请注明原文链接:https://www.cnblogs.com/nb-blog/p/11969508.html

浙公网安备 33010602011771号