Stress load tool
stress is a standalone load generator for Monibuca servers. It runs outside the Monibuca process, uses native RTMP / RTSP / HTTP-FLV / HLS clients, and loops MP4 or FLV files as media — no FFmpeg required.
Highlights
Section titled “Highlights”| Capability | Description |
|---|---|
| Push | RTMP, RTSP; full builds add SRT publish and WebRTC WHIP |
| Pull | HTTP-FLV, HLS, RTSP, RTMP |
| Media | Local MP4/FLV loop; optional browser upload in the UI |
| Console | Default http://localhost:8787/ — start/stop loads, view stats |
| CLI | Headless runs, timed exit, script/CI friendly |
| Monibuca | Only needs reachable URLs — no in-server stress API required |
Quick start
Section titled “Quick start”- Run Monibuca (see Installation).
- Download the stress package for your platform below, or build from source:
cargo build -p stress --release --features full. - Place a test MP4 in the working directory (default
test.mp4, configurable viadefault_input). - Start stress:
./stress --config config.yaml- Open http://localhost:8787/ — e.g. push
rtmp://127.0.0.1:1935/live/stress_%d, pullhttp://127.0.0.1:8180/live/stress_0.flv.
CLI examples
Section titled “CLI examples”# Web UI + API only./stress --config config.yaml
# Push 10 RTMP streams on startup, keep the console./stress --push 10 --push-url rtmp://127.0.0.1:1935/live/test_%d
# Push + pull, exit after 120s (no HTTP server)./stress --push 5 --push-url rtmp://127.0.0.1:1935/live/p_%d \ --pull 20 --pull-url http://127.0.0.1:8180/live/test.flv \ --duration 120 --no-serve
./stress helpUse %d in URLs for per-connection stream index.
Configuration
Section titled “Configuration”Sample config.yaml in the release bundle:
listen: "0.0.0.0:8787"default_input: "test.mp4"loop_file: truemedia_dir: "."| Field | Description |
|---|---|
listen | HTTP console and API bind address |
default_input | Default preset filename |
loop_file | Loop media file |
media_dir | Directory scanned for MP4/FLV presets |
HTTP API (when server is running)
Section titled “HTTP API (when server is running)”| Method | Path | Description |
|---|---|---|
| GET | /api/stress/status | Metrics, session state, presets |
| GET | /api/stress/presets | MP4/FLV list in media_dir |
| POST | /api/stress/media | Upload test file (multipart file) |
| DELETE | /api/stress/media | Clear upload |
| POST | /api/stress/push/{count} | JSON {"remoteURL","presetFile?"} |
| POST | /api/stress/pull/{count} | JSON {"remoteURL"} |
| POST | /api/stress/stop/push | Stop push |
| POST | /api/stress/stop/pull | Stop pull |
Downloads
Section titled “Downloads”Pre-built binaries are published by Release CI to https://download.m7s.live, same layout as Monibuca downloads:
- Stable:
https://download.m7s.live/bin/<filename> - Beta:
https://download.m7s.live/beta/<filename>
Each archive contains stress (or stress.exe on Windows) and sample config.yaml. Linux/macOS binaries are named stress_linux_* / stress_darwin_* inside the tarball.
| Platform | Stable (bin) | Beta (beta) |
|---|---|---|
| linux / amd64 | stress_v6_linux_amd64.tar.gz | stress_v6_linux_amd64.tar.gz |
| linux / arm64 | stress_v6_linux_arm64.tar.gz | stress_v6_linux_arm64.tar.gz |
| Platform | Stable (bin) | Beta (beta) |
|---|---|---|
| darwin / amd64 (Intel) | stress_v6_darwin_amd64.tar.gz | stress_v6_darwin_amd64.tar.gz |
| darwin / arm64 (Apple Silicon) | stress_v6_darwin_arm64.tar.gz | stress_v6_darwin_arm64.tar.gz |
Windows
Section titled “Windows”| Platform | Stable (bin) | Beta (beta) |
|---|---|---|
| windows / amd64 | stress_v6_windows_amd64.zip | stress_v6_windows_amd64.zip |
Attachments are also on GitHub Releases.
Suggested workflow
Section titled “Suggested workflow”- Deploy Monibuca and verify ports/firewall.
- Run stress on a separate host when possible.
- Ramp from 1 push / 1 pull before scaling.
- Watch Monibuca Admin or APIs for server-side metrics; use the stress UI for client-side stats.
- Stop workloads via UI or API and confirm idle state.