Redis---基准测试

标签:Redis首次发布:2023-11-12最近修改:2023-11-12

简介

在Redis安装完毕后会自动安装一个redis-benchmark测试工具,是一个压力测试工具,模拟 N 个客户端同时发出 M 个请求,用于测试 Redis 的性能。使用 redis-benchmark --help 来查看基准参数。当以下值为默认值的时候,则可以省略。

序号 选项 描述 默认值
1 -h 指定服务器主机名。 127.0.0.1
2 -p 指定服务器端口 6379
3 -s 指定服务器 socket
4 -c 指定并发连接数 50
5 -n 指定请求数 100000
6 -d 以字节的形式指定 SET/GET 值的数据大小,单位字节 3
7 -k 1表示保持连接,0表示重新连接 1
8 -r SET/GET/INCR 使用随机 key, SADD 使用随机值
9 -P 通过管道传输 请求 1
10 -q 指定仅给出总述性报告
11 –csv 以 CSV 格式输出
12 -l(L 的小写字母) 生成循环,永久执行测试
13 -t 仅运行以逗号分隔的测试命令列表。
14 -I(i 的大写字母) Idle 模式。仅打开 N 个 idle 连接并等待。

测试

命令解析

image-20230416154550569

测试100个客户端发送20万个请求,每个操作数据的大小为5字节时 set 命令的性能分析。结果由4部分组成:

测试环境报告

image-20230416154938020

  • 20万次请求在2.80秒内完成
  • 100个并行客户端
  • 5字节有效载荷
  • 在接收完响应报文后,客户端也不关闭连接
  • 第5行是关于持久化策略
  • 第6行表示Redis主机没有开启AOF功能
  • 第7行表示Redis主机没有开启多线程

延迟的百分比分布

image-20230416155319412

这是按照百分比进行的统计报告:每完成一次剩余测试量的 50%就给出一个统计数据。

  • 完成进度: 0.000%,花费时间:0.207毫秒,完成请求的数量:2
  • 完成进度:50.000%,花费时间:0.655毫秒,完成请求的数量:101828
  • 完成进度:75.000%,花费时间:0.719毫秒,完成请求的数量:153177
  • 完成进度:87.500%,花费时间:0.815毫秒,完成请求的数量:175583
  • 完成进度:93.750%,花费时间:1.039毫秒,完成请求的数量:187620
  • 完成进度:96.875%,花费时间:1.287毫秒,完成请求的数量:193774

以此类推…

延迟的累积分布

image-20230416155410756

这是按照时间间隔统计的报告:基本是每 0.1 毫秒统计一次。

  • 在0.1毫秒内,完成进度: 0.000%,完成请求的数量:0
  • 在0.2毫秒内,完成进度: 0.001%,完成请求的数量:2
  • 在0.3毫秒内,完成进度: 0.011%,完成请求的数量:21
  • 在0.4毫秒内,完成进度: 0.040%,完成请求的数量:81
  • 在0.5毫秒内,完成进度: 2.578%,完成请求的数量:5156
  • 在0.6毫秒内,完成进度:28.195%,完成请求的数量:56389

以此类推…

总述报告

image-20230416155643857

  • 吞吐量摘要:每秒71530.76个请求

  • 延迟摘要(毫秒):

    avg min p50 p95 p99 max
    0.720 0.200 0.655 1.127 1.975 14.199
    • avg:平均处理每个请求的耗时。
    • min:从客户端发送第一个请求开始计时,到Redis服务器返回第一个请求的结果所用的时间。
    • p50:即中位数值。20万个请求的响应时间按照从小到大排列,位置在第10万的请求的值,即为P50值。
    • p95:20万个请求的响应时间按照从小到大排列,位置在第19万(200000 * 95%)的请求的值,即为P95值。
    • p99:20万个请求的响应时间按照从小到大排列,位置在第19万8千(200000 * 99%)的请求的值,即为P99值。
    • max:从客户端发送第一个请求开始计时,到Redis服务器返回最后一个请求的结果所用的时间。