Engula Bench(基准测试工具)

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 大小相应参数即可。

3. 使用说明

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

3.1 运行环境

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

  • CentOS 版本 ≥ 7.9
  • Ubuntu 版本 ≥ 18.04
  • 推荐使用 Docker 官方版本(安装指南,部分网络可能需 VPN)
  • 建议主机 CPU 核心数不少于 8 核
  • 建议 Glibc 版本 ≥ 2.34

3.2 运行 Engula Bench

1docker pull registry.cn-guangzhou.aliyuncs.com/montplex/engula-batch-benchmark
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.cn-guangzhou.aliyuncs.com/montplex/engula-batch-benchmark

运行结果如下图:

运行结果

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

3.3 查看运行结果

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

查看运行结果

4. FAQ

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

有的,联系云奈科技工作人员获得安装包,需要提供下测试的机器的操作系统版本和 CPU 架构等信息。获得安装包以后,按照下列方法进行测试:

1tar engula-bench.tar
2cd engula-bench
3./engula-batch-benchmark

执行过程和 3.2 节讲述一致,此处不再赘述。

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

滚屏现象

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

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

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