Engula ValueSight(内存节省评估工具)
Engula
Engula 是云奈科技公司自研的缓存内核产品,专为使用开源 Redis 的用户设计。它的核心优势在于极低风险地降低现有 Redis 集群的硬件成本,主要特点包括:
- 最小化核心代码修改:确保系统稳定性和兼容性,当前版本与 Redis 7.2.4 100% 协议兼容。
- 内存节省:大幅减少元数据开销,搭载自研 Compressed HybridLog 存储引擎,进一步降低内存占用。
- 性能优化:通过改进 HashTable 实现、优化网络线程通信机制、提升 CPU 预取(Prefetch)命中率、引入异步线程框架等手段,优化端到端的性能。
根据早期用户的实测结果,Engula 平均节省 50% 以上内存,性能损耗低于 10%。
Engula ValueSight
Engula ValueSight 是一款帮助用户快速、精准评估 Engula 价值的工具。用户可以基于自身业务真实数据,一键对比 Engula 和 Redis 的内存占用情况,并量化 Engula 在实际业务中的优势。
核心功能包括:
- 统计相同数据集在 Engula 和 Redis 中的 RSS 内存占用情况。
- 生成内存占用对比图表,提供清晰的可视化分析。
- 输出内存使用分析摘要,便于用户理解优化效果。
运行操作
运行环境
Engula ValueSight 以 Docker 镜像形式提供,可在安装有 Docker 的 Linux 或 macOS 系统上运行,具体环境要求如下:
- CentOS 版本 ≥ 7.9
- Ubuntu 版本 ≥ 18.04
- 推荐使用 Docker 官方版本(安装指南,部分网络可能需 VPN)
- 建议主机 CPU 核心数不少于 2 核
TIPS
如果运行环境不能访问公网,不能 docker pull 下来,可以参考本文档 4.5 镜像文件导出+导入 部分下进行镜像的导出导入。
运行步骤
- 准备 RDB 文件:在运行的主机上生成 Redis 的
dump.rdb 文件(可使用 BGSAVE 命令生成)。
- 下载 Engula ValueSight 镜像:
1docker pull registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight
- 创建日志目录:
1# 本地目录名称可以更换,注意最终执行的 docker 命令映射目录别写错
2mkdir -m 777 analysis_output
- 执行分析:
1docker run -it --rm \
2 -v "<RDB文件路径>:/tmp/dump.rdb" \
3 -v "$(pwd)/analysis_output:/engula/analysis_output" \
4 registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight
注意:请将 <RDB文件路径> 替换为实际的 dump.rdb 文件路径。
运行示例
假设运行主机已安装 Docker,并且当前目录下有 dump.rdb 文件,可执行以下命令生成对 dump.rdb 文件的压缩评估报告:
注:Engula ValueSight 时不时更新,建议一段时间没有使用过先执行 pull 的命令进行更新。
1# 创建日志目录
2mkdir analysis_output
3
4# 更新 Engula ValueSight 镜像
5docker pull registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight
6
7# 执行分析
8docker run -it --rm \
9 -v "$(pwd)/dump.rdb:/tmp/dump.rdb" \
10 -v "$(pwd)/analysis_output:/engula/analysis_output" \
11 registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight
运行过程

运行结果

分析结束后,按 Enter 可查看详细情况,按 Q / Ctrl+C 退出。
批量测试压缩率
运行步骤
- 创建必要目录:
1# 创建 RDB 文件存放目录
2mkdir rdb_dir
3
4# 创建日志目录
5mkdir analysis_output
-
放置 RDB 文件:
- 将需要分析的 RDB 文件移入
rdb_dir 目录。
- 支持子目录结构。
- 程序会自动扫描所有
.rdb 后缀文件。
-
拉取分析工具镜像:
1docker pull registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight
- 执行批量压缩评估命令:
1docker run -it --rm \
2 -v "$(pwd)/rdb_dir:/tmp/rdb_dir" \
3 -v "$(pwd)/analysis_output:/engula/analysis_output" \
4 registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight --batch
rdb_dir 与 analysis_output 的路径需要与实际创建的目录保持一致。
- 请仔细检查映射路径的配置,避免路径错误导致问题。
分片计算功能
RDB 文件名的最后一个下划线加数字会被视为分片数量,并参与最终计算,以获得更准确的内存节省规模评估。

在上面这个例子里,r_profile_100w_1000.rdb 被视为有 1000 个分片。
运行过程

运行结果

analysis_output 目录内容
对于 dump_1.rdb 会有四个文件:
1_dump_1.rdb_cmd_output_for_engula.log // dump_1.rdb 在 engula 评估过程中的日志
2_dump_1.rdb_cmd_output_for_redis.log // dump_1.rdb 在 redis 评估过程中的日志
3_dump_1.rdb_engula-stats-rdb.json // dump_1.rdb 在 engula 中的统计信息
4_dump_1.rdb_redis-stats-rdb.json // dump_1.rdb 在 redis 中的统计信息
每个 RDB 文件会有单独的相关文件产生,如果关心细节,或者报错,可以通过这些文件获取相关信息。
另外还会生成 info.log 记录通用日志信息。
后台运行
由于需要对多个 RDB 文件进行批量评估,处理时间可能较长。建议将任务放在后台运行,以提高效率并避免长时间等待。
1nohup docker run --rm \
2 -v "$(pwd)/rdb_dir:/tmp/rdb_dir" \
3 -v "$(pwd)/analysis_output:/engula/analysis_output" \
4 registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight --batch \
5 > analysis_output/docker.log 2> analysis_output/docker.error.log &
可以通过以下方式查看任务进度:
1# 查看输出日志
2tail -f analysis_output/docker.log
3
4# 查看错误日志
5tail -f analysis_output/docker.error.log
FAQ
4.1 Docker 内存设置过小
错误现象
运行时报错:
Error2: Child process quit abnormally, ExitCode=9
原因与解决
此错误通常因 RDB 文件过大导致 Docker 内存不足。建议:
- 在 Docker Desktop 设置中增加内存分配(推荐 ≥ 4GB)。
- 拆分大 RDB 文件分批次处理。
4.2 Debug 方法
分析完成后,analysis_output 目录内会包含程序运行日志和统计信息,可用于 Debug。如果遇到问题,可联系云奈科技技术团队进行咨询。
4.3 Red Hat 下系统 Docker 版本安装
在 Red Hat Linux 9 系统中,通过以下命令安装的 Docker 版本无法满足本次测试需求。
1yum install docker -y
2
3docker --version
4# podman version 4.9.4-rhel
建议按照 Docker 官方文档 进行安装,具体步骤如下:
- 卸载旧版本:
1sudo yum remove docker \
2 docker-client \
3 docker-client-latest \
4 docker-common \
5 docker-latest \
6 docker-latest-logrotate \
7 docker-logrotate \
8 docker-engine \
9 podman \
10 runc
- 安装 yum-utils 并添加 Docker 官方仓库:
1sudo yum install -y yum-utils
2sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
- 安装最新版本的 Docker:
1sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动 Docker 服务:
1sudo systemctl start docker
4.4 批量模式报错 :“rdb file not found”
镜像默认程序不运行在 root 用户下,这个错误可能是因为这个问题。
解决方案:
在批量命令中添加 --user root。
4.5 镜像文件导出+导入
Step 1. 导出
在一个可以访问公网的机器上:
1docker pull --platform=amd64 registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight
2docker save registry.cn-guangzhou.aliyuncs.com/montplex/engula-valuesight > engula-valuesight.tar.gz
提示:如果这个可以访问公网的机器的 CPU 架构和目标测试机器的 CPU 架构不同,则需要指定 --platform 参数为目标测试机器的 CPU 架构,X86 则为 amd64。
Step 2. Copy
把导出的 tar.gz 文件 copy 到目标测试机器上。
Step 3. 导入
在目标测试机器上:
1docker load -i engula-valuesight.tar.gz
2docker images | grep valuesight
联系我们
如果您在使用 Engula 或 Engula ValueSight 过程中遇到任何问题,或者希望了解更多产品信息,欢迎随时联系我们:
电子邮件:support@engula.cn
云奈科技技术团队将在工作日 9:00 — 18:00 (UTC+8) 及时回复您的咨询。感谢您的支持! 🚀