Engula AutoBench(基准测试工具)

1. 设计目标和对比方法

  • 目标:对比 Engula 2.1 与 Redis 7.2 在不同 value 大小和 CPU 核数场景下的 Get/Set 吞吐与延迟表现。
  • 指标:QPS(吞吐量)、P50(平均延迟)。
  • 对比方法说明
    • 单机对比,关闭持久化,专注内存路径与协议处理性能。
    • I/O 线程数维度:io-threads ∈ {1, 2, 4}。
    • 数据规模、请求分布、并发模型固定,结果可重复。
    • Value 大小多档位覆盖:8B、32B、128B、512B、1KB、2KB。

2. 产品介绍

2.1 对比测试流程

  1. 启动服务(指定 io-threads、CPU 亲和性)。
  2. 正式压测(重复 3 次取平均)。
  3. 记录 QPS、P50,并保存原始日志。

2.2 测试数据用例

  • Key 总量:1,000,000
  • Value 大小档位:8B、32B、128B、512B、1KB、2KB(逐档测试并出具结果)。

2.3 对比测试命令示例

在限制服务端 CPU 资源为 2 vCore,value 大小为 128B 的测试场景下,测试命令如下:

1taskset -c 0-1 redis-server --save "" --appendonly no --io-threads 2
2taskset -c 4-7 redis-benchmark --threads 4 -c 200 -r 1000000 -n 1000000 -q -t set,get -d 128

其它测试场景只需替换 CPU 资源和 value 大小相应参数即可。

快速使用摘要

内容
工具简介 自动对比 Engula 与 Redis 在吞吐、延迟、CPU 线程配置和 value 大小维度下的表现。
前置条件 本机可运行 Docker;建议至少 8 核 CPU;准备 output.logsummary.html 输出文件。
快速开始 docker run --user $(id -u):$(id -g) -it --rm -v $(pwd)/output.log:/montplex/tmp_bin/output.log -v $(pwd)/summary.html:/montplex/tmp_bin/summary.html registry.ap-southeast-1.aliyuncs.com/montplex/engula-auto-bench:latest
输出解读 重点查看 summary.html 中不同 value 大小、I/O 线程数下的 QPS、P50 和 CPU 维度差异。
完整示例 见下方“运行 Engula AutoBench”。

命令行参数

参数 作用
--user $(id -u):$(id -g) 让容器生成的日志文件归属当前用户,方便直接打开和清理。
-v $(pwd)/output.log:/montplex/tmp_bin/output.log 挂载终端日志输出文件。
-v $(pwd)/summary.html:/montplex/tmp_bin/summary.html 挂载 HTML 汇总报告输出文件。

3. 使用说明

为方便使用,Engula AutoBench 提供了 Docker 版本的使用模式。

3.1 运行环境

Engula AutoBench 以 Docker 镜像形式提供,可在安装有 Docker 的 Linux 或 macOS 系统上运行,具体环境要求如下:

  • CentOS 版本 ≥ 7.9
  • Ubuntu 版本 ≥ 18.04
  • 推荐使用 Docker 官方版本(安装指南,网络访问较慢时可提前准备镜像)
  • 建议主机 CPU 核心数不少于 8 核
  • 建议 Glibc 版本 ≥ 2.34

3.2 运行 Engula AutoBench

1docker pull registry.ap-southeast-1.aliyuncs.com/montplex/engula-auto-bench:latest
2
3# 在任意文件夹内
4mkdir tmp_test && cd tmp_test
5touch output.log
6touch summary.html
7
8docker run --user $(id -u):$(id -g) -it --rm \
9  -v $(pwd)/output.log:/montplex/tmp_bin/output.log \
10  -v $(pwd)/summary.html:/montplex/tmp_bin/summary.html \
11  registry.ap-southeast-1.aliyuncs.com/montplex/engula-auto-bench:latest

运行结果如下图:

运行结果

由于一共要跑 18 组对比,每组 Redis 和 Engula 串行测试,且每组测试 3 次,总共大约需要 40 分钟完成整个测试。

3.3 查看运行结果

运行结束后会生成一个 summary.html 文件,通过浏览器打开查看运行结果,如下图:

查看运行结果

4. FAQ

4.1 我的环境不支持 docker,是否有二进制测试的方法?

官网推荐使用 Docker 镜像运行。如果测试机不能运行 Docker,请联系云奈科技工作人员获取与目标操作系统、CPU 架构匹配的离线包;离线包命令以交付包内 README 为准。

4.2 执行性能测试工具出现滚屏

滚屏现象

例如出现上图这样的滚屏现象。

这是因为当输出内容的总宽度超过终端窗口宽度时,文本会自动换行。使用 \r 回车符只能回到当前行的开头,但如果内容跨越了多行,就无法正确覆盖之前的输出,导致不断产生新行。

解决方法:缩小终端字体,或增大终端的宽度即可。