[开源] rload: 仅 3.5MB 内存,原生支持 Nginx 日志回放的 Rust 高性能压测工具

7 月 29 日
 ZhaoWenhao

[开源] rload - 仅 3.5MB 内存,原生支持 Nginx 日志/JSONL 回放的 Rust 高性能压测工具( wrk 兼容)

各位 V 友,大家好!

平时在做后端开发、架构设计或 SRE 运维时,大家肯定都用过 wrk。它的单机吞吐量和极低的内存占用(常驻 3MB 左右)绝对是业界的标杆。

但在实际生产中,我们经常遇到一个头疼的问题:“静态单接口压测看起来稳如老狗,线上真实复杂流量一进来,数据库/缓存就瞬间雪崩。” 想要高保真地还原线上故障、做靠谱的容量规划,最直接有效的办法就是——直接回放真实的线上 Nginx 访问日志( access log )。

然而,现有工具在这点上都不太完美:

  1. wrk:原生不支持日志回放,必须写 Lua 脚本,维护成本高,调试困难。
  2. k6:虽然支持 JS 脚本,但内置的 JS 运行时和 GC 导致单机压测极其消耗 CPU 和内存(随随便便几百 MB ),压测数据也容易因 GC 发生抖动失真。
  3. Locust:Python 协程性能偏低,单机几千 RPS 就满载了,回放几十万日志得拉一整个容器集群,成本高昂。

为了解决这个痛点,我用 Rust 编写了 **rload**,并已经在 GitHub 开源。


🚀 免安装,一键直接运行!

为了让大家用得爽,目前我们已经在 GitHub Releases 页面发布了全平台的预编译静态二进制包! 无需配置 Rust 编译环境,支持一键直接运行:

💡 快速上手:

  1. 去 Releases 页面下载对应系统的压缩包解压。
  2. 从线上服务器导出一份 access.log 到本地。
  3. 运行命令,直接以 100 并发顺序/随机回放真实流量: rload -c 100 -d 30s --log-replay access.log http://staging-env.internal

🛡️ 核心亮点:


严谨的准确性判定:

我们在仓库里的 benchmarks/VALIDATION_2026-07-11.md 极其详细地记录了我们的准确性判定方法、配对运行的原始数据以及门槛限制。我们甚至主动写出了我们在“零延迟回环 P99 略微超过 5% 判定门槛”这一局限性,绝不夸大宣传,欢迎各位硬核大佬来拍砖和 Code Review !

如果您对高性能网络 I/O 编程、Rust 裸 mio 实现感兴趣,或者正好在线上遇到复杂的日志回放压测需求,欢迎体验并给个 Star ⭐️ 支持!

期待各位 V 友的反馈、Issue 或 Pull Request ,任何吐槽或想法我都非常欢迎和感激!

1550 次点击
所在节点    Rust
1 条回复
xiaoyureed
9 月 8 日
压测工具太多了眼花缭乱

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1230682

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX