RUST-NATIVE HTTP TRAFFIC REPLAY

回放真实流量。
找到系统极限。

rload 是一个兼容 wrk 核心语义的 Rust 压测引擎。版本化 YAML 工作负载、类型化 CI 断言和确定性的离线报告,与 Nginx 和 JSONL 回放共同提供可复现的负载验证。

最新稳定版 v0.3.1 · MIT / Apache-2.0 双协议 · Rust 1.96+ / 单一原生二进制

rload v0.3.1
$ rload -t 4 -c 200 -d 30s \
--log-replay access.log \
--log-order shuffle --seed 42 \
http://staging-api.internal

Running 30s test @ http://staging-api.internal
4 threads and 200 connections

Thread Stats Avg Max +/- Stdev
Latency 2.18ms 18.74ms 84.32%
Req/Sec 12.45k 15.92k 76.10%

1482701 requests in 30.00s, 3.24GB read
Requests/sec: 49,423.36
Average latency: 2.18ms
99% Latency:   8.12ms
Socket errors: connect 0, read 0, write 0, timeout 0

● log replay complete (shuffled, seed: 42)
WRK SEMANTICS PARITY · NGINX ACCESS LOG REPLAY · STRUCTURED JSONL REPLAY · COORDINATED OMISSION PREVENTION · STABLE STATIC BINARY

01 / 核心能力

从单点压测,
进化到生产级真实流量回放。

传统的循环刷单 URL 无法暴露真实瓶颈。rload 让每一笔请求、每一个入参和调用顺序都源于真实环境,且完全幂等可复现。

01 / HIGH FIDELITY

Nginx 访问日志高保真回放

原生流式解析 Common/Combined Nginx 日志,无需编写任何 Lua 脚本。支持顺序、洗牌(Shuffle)和随机三种回放模式。

--access-log access.log --replay-order shuffle --seed 42
02 / CUSTOM PAYLOADS

结构化 JSONL 请求回放

支持回放包含自定义 Method、Headers、和 UTF-8 Body 的结构化 JSON 列表。通过高精度时间轮优雅模拟真实用户请求间隔。

--request-file queries.jsonl --replay-timestamps
03 / PERFORMANCE PARITY

与 wrk 性能及指标绝对对齐

基于 Bare-metal 裸 mio 实现多工作线程绑核模型。实测常驻内存仅 3.5MB,吞吐量 RPS 相比 wrk 误差低于 1%,零调度器额外噪声。

rload (3.55MB) wrk (3.47MB) k6 (>100MB)
04 / REAL SRE WORKFLOWS

防协同遗漏与流量塑造

内置精准的发送调速步调,真实还原服务端卡顿时客户端的排队延迟。支持通过 stages 定义阶梯式、突发式等高阶负载波形。

--replay-stages 10s:100,5s:1000

02 / 为什么选择 rload?

完美对齐 wrk。
原生拥抱现代现实。

在极致轻量化与丰富 replay 能力中,rload 找到了黄金平衡点:

核心维度 / 功能 wrk 4.2.0 (C) k6 (Go / JS) rload v0.3.1 (Rust)
静态极速 HTTP 压测 ✓ 极致性能 ✓ 消耗较大 ✓ 极致性能 (对齐)
静态内存占用 (RSS) ~3.5 MiB > 100 MiB ~3.55 MiB (对齐)
Nginx 访问日志回放 ✗ 不支持 (需 Lua) ✗ 极度消耗内存 ✓ 原生流式支持
JSONL 自定义请求回放 ✗ 不支持 (需 Lua) ✓ 支持 ✓ 原生流式支持
流量步调控制 (Pacing) ✗ 不支持 ✓ 支持 ✓ 原生高精度支持
协同遗漏预防 (CO) ✗ 不支持 (需 wrk2) ✗ 不支持 ✓ 原生精确预防
CI/CD 容器集成友好度 ✗ 需动态依赖/编译 ✓ 支持 ✓ 极佳 (单静态包)

03 / 安装指引

一秒安装,
开箱即用。

我们为所有主流操作系统提供了一等公民级别的原生支持,并发布了全平台无依赖静态二进制文件,你可以选择最适合你的方式:

# 使用 Homebrew 安装(macOS & Linux)
brew install wenhaozhao/rload/rload

# 验证安装是否成功
rload --help
# 使用 Rust 工具链一键编译安装
cargo install rload

# 确保 ~/.cargo/bin 已经在你的 PATH 中
rload --help
# 针对无编译环境的服务器/CI 容器
# 1. 访问 GitHub Releases 页面一键下载对应平台的压缩包
# 2. 解压并将二进制文件移入 PATH,例如:
tar -xvf rload-v0.3.0-x86_64-unknown-linux-gnu.tar.gz
sudo mv rload /usr/local/bin/

# 3. 验证运行
rload --help

04 / 经典实战指令

常见工程压测场景,
复制即用。

🔥 场景 A:静态极速压测(对齐 wrk)

使用 4 个工作线程、200 个连接,对目标接口压测 30 秒,并持续打印延迟统计:

rload -t 4 -c 200 -d 30s https://api.yourdomain.com

📂 场景 B:高保真 Nginx 日志随机回放

读取真实的 Nginx 访问日志,使用特定随机种子(确保结果可幂等重现)打乱顺序进行回放:

rload -c 100 -d 60s --access-log ./access.log --replay-order shuffle --seed 12345 http://staging.internal

⏳ 场景 C:按日志真实时间戳速度回放

按照 Nginx 日志中记录的相对时间差高保真还原流量。使用双倍速进行压力测试:

rload -c 50 --access-log ./access.log --replay-timestamps --replay-speed 2.0 http://staging.internal

📝 场景 D:JSONL 多形态动态请求回放

顺序循环回放自定义导出的 JSON 结构化请求文件(支持自定义 Header、Method 和 Request Body):

rload -c 100 -d 5m --request-file ./requests.jsonl http://staging.internal