Nginx 访问日志高保真回放
原生流式解析 Common/Combined Nginx 日志,无需编写任何 Lua 脚本。支持顺序、洗牌(Shuffle)和随机三种回放模式。
--access-log access.log --replay-order shuffle --seed 42
rload
RUST-NATIVE HTTP TRAFFIC REPLAY
rload 是一个兼容 wrk 核心语义的 Rust 压测引擎。版本化 YAML 工作负载、类型化 CI 断言和确定性的离线报告,与 Nginx 和 JSONL 回放共同提供可复现的负载验证。
$ 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)
01 / 核心能力
传统的循环刷单 URL 无法暴露真实瓶颈。rload 让每一笔请求、每一个入参和调用顺序都源于真实环境,且完全幂等可复现。
原生流式解析 Common/Combined Nginx 日志,无需编写任何 Lua 脚本。支持顺序、洗牌(Shuffle)和随机三种回放模式。
--access-log access.log --replay-order shuffle --seed 42
支持回放包含自定义 Method、Headers、和 UTF-8 Body 的结构化 JSON 列表。通过高精度时间轮优雅模拟真实用户请求间隔。
--request-file queries.jsonl --replay-timestamps
基于 Bare-metal 裸 mio 实现多工作线程绑核模型。实测常驻内存仅 3.5MB,吞吐量 RPS 相比 wrk 误差低于 1%,零调度器额外噪声。
内置精准的发送调速步调,真实还原服务端卡顿时客户端的排队延迟。支持通过 stages 定义阶梯式、突发式等高阶负载波形。
--replay-stages 10s:100,5s:1000
02 / 为什么选择 rload?
在极致轻量化与丰富 replay 能力中,rload 找到了黄金平衡点:
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 / 经典实战指令
使用 4 个工作线程、200 个连接,对目标接口压测 30 秒,并持续打印延迟统计:
rload -t 4 -c 200 -d 30s https://api.yourdomain.com
读取真实的 Nginx 访问日志,使用特定随机种子(确保结果可幂等重现)打乱顺序进行回放:
rload -c 100 -d 60s --access-log ./access.log --replay-order shuffle --seed 12345 http://staging.internal
按照 Nginx 日志中记录的相对时间差高保真还原流量。使用双倍速进行压力测试:
rload -c 50 --access-log ./access.log --replay-timestamps --replay-speed 2.0 http://staging.internal
顺序循环回放自定义导出的 JSON 结构化请求文件(支持自定义 Header、Method 和 Request Body):
rload -c 100 -d 5m --request-file ./requests.jsonl http://staging.internal