Native Nginx Log Replay
Stream-parse Common or Combined Nginx logs natively without writing complex Lua scripts. Supports sequential, shuffled, and random replay modes.
--access-log access.log --replay-order shuffle --seed 42
rload
RUST-NATIVE HTTP TRAFFIC REPLAY
rload is a Rust HTTP load generator with wrk-compatible CLI semantics. Versioned YAML workloads, typed CI assertions, and deterministic offline reports pair with Nginx and JSONL replay for reproducible load validation.
$ 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 / Capabilities
Static single-endpoint benchmarks fail to trigger real-world caching or queueing bottlenecks. rload ensures every request and sequence is derived from real environments, 100% reproducible.
Stream-parse Common or Combined Nginx logs natively without writing complex Lua scripts. Supports sequential, shuffled, and random replay modes.
--access-log access.log --replay-order shuffle --seed 42
Replay structured HTTP payloads (headers, methods, bodies) out-of-the-box. Gracefully mimic relative inter-arrival delays using high-precision timers.
--request-file queries.jsonl --replay-timestamps
Built on bare-metal mio with thread-affinity. Maintains a constant ~3.5MB RSS footprint. Delivers near-identical throughput and latency distribution (MAE < 1% vs. wrk) with zero scheduler noise.
Prevents Coordinated Omission by tracking latency against scheduled send times. Program custom load profiles (step, burst, ramp-up) via flexible stage triggers.
--replay-stages 10s:100,5s:1000
02 / Why rload?
rload strikes the perfect balance between raw bare-metal execution speed and feature-rich traffic reproduction:
03 / Installation
We provide first-class cross-platform support with single, dependency-free pre-compiled static binaries. Pick the method that fits your environment:
# Install via Homebrew (macOS & Linux)
brew install wenhaozhao/rload/rload
# Verify installation
rload --help
# Install via cargo (for Rust toolchains)
cargo install rload
# Ensure ~/.cargo/bin is in your PATH
rload --help
# For container & minimal server environments
# 1. Download the archive for your architecture from GitHub Releases
# 2. Extract and move the binary into your PATH, e.g.:
tar -xvf rload-v0.3.0-x86_64-unknown-linux-gnu.tar.gz
sudo mv rload /usr/local/bin/
# 3. Verify execution
rload --help
04 / Practical Commands
Bench a target with 4 threads and 200 connections for 30 seconds, tracking latency distribution:
rload -t 4 -c 200 -d 30s https://api.yourdomain.com
Replay an Nginx access log in a shuffled order using a deterministic seed for reproducible results:
rload -c 100 -d 60s --access-log ./access.log --replay-order shuffle --seed 12345 http://staging.internal
Reproduce real temporal gaps based on access-log timestamps at double speed (2.0x pacing):
rload -c 50 --access-log ./access.log --replay-timestamps --replay-speed 2.0 http://staging.internal
Sequentially replay structured query templates with custom headers, methods, and payloads:
rload -c 100 -d 5m --request-file ./requests.jsonl http://staging.internal