redislabs/memtier_benchmarkmemtier_benchmark是由Redis(前身为Garantia Data Ltd.)开发的命令行工具,用于NoSQL键值数据库的负载生成和基准测试。
更多信息请参见:
可直接使用Docker Hub上的可用镜像:
# 最新稳定版 $ docker run --rm redislabs/memtier_benchmark:latest --help # master分支边缘构建版 $ docker run --rm redislabs/memtier_benchmark:edge --help
$ docker build -t memtier_benchmark . $ docker run --rm memtier_benchmark --help
$ docker-compose -f docker-compose.memcached.yml up --build
或
$ docker-compose -f docker-compose.redis.yml up --build
查看命令行选项:
$ docker run --rm redislabs/memtier_benchmark:latest --help
使用集群模式选项时,每个客户端为每个节点打开一个连接。因此,当使用大量线程和客户端时,用户必须确保不超过文件描述符的最大数量限制。
当Redis节点之间存在不对称性,且用户设置了--requests选项时,生成的键可能存在间隙。此外,比例和键生成器是按客户端(而非连接)设置的。在这种情况下,将比例设置为1:1并不能保证100%的命中率,因为键会分布到不同的连接/节点。
在基准测试中施加速率限制,本质上是模拟受控的生产环境。这种设置对于了解在特定吞吐量约束下的延迟表现至关重要:
使用--rate-limiting参数并指定每个连接的期望RPS:
memtier_benchmark [其他选项] --rate-limiting=<RPS>
注意:当与集群模式选项一起使用时,速率限制与每个节点的连接相关联。
memtier_benchmark --ratio=1:0 --test-time=60 --rate-limiting=100 -t 2 -c 50 --key-pattern=P:P --key-maximum ***
对于非正态分布(如延迟),许多正态分布统计的“基本规则”不再适用。除了计算均值(试图用单个结果表示整个分布),还可以使用间隔采样——百分位数,它能告诉你有多少请求实际经历了该延迟。
memtier_benchmark使用HdrHistogram(因其低内存占用、高精度、基准测试期间零分配和 constant 访问时间)计算百分位数。默认输出50th、99th和99.9th百分位数。可使用--print-percentiles选项指定其他百分位数(例如:--print-percentiles 90,99,99.9,99.99)。
使用--hdr-file-prefix选项指定文件名前缀,可将完整延迟保存到文件。每个不同的命令将保存为两个文件:.txt(文本格式)和.hgrm(HistogramLogProcessor格式)。文本格式可通过在线格式化工具生成可视化直方图,.hgrm格式可作为Redislabs mbdirector的输入以实现时域结果可视化。
全延迟谱可视化示例(使用在线格式化工具):
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务