Skip to content

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.

CapabilityDescription
PushRTMP, RTSP; full builds add SRT publish and WebRTC WHIP
PullHTTP-FLV, HLS, RTSP, RTMP
MediaLocal MP4/FLV loop; optional browser upload in the UI
ConsoleDefault http://localhost:8787/ — start/stop loads, view stats
CLIHeadless runs, timed exit, script/CI friendly
MonibucaOnly needs reachable URLs — no in-server stress API required
  1. Run Monibuca (see Installation).
  2. Download the stress package for your platform below, or build from source: cargo build -p stress --release --features full.
  3. Place a test MP4 in the working directory (default test.mp4, configurable via default_input).
  4. Start stress:
Terminal window
./stress --config config.yaml
  1. Open http://localhost:8787/ — e.g. push rtmp://127.0.0.1:1935/live/stress_%d, pull http://127.0.0.1:8180/live/stress_0.flv.
Terminal window
# 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 help

Use %d in URLs for per-connection stream index.

Sample config.yaml in the release bundle:

listen: "0.0.0.0:8787"
default_input: "test.mp4"
loop_file: true
media_dir: "."
FieldDescription
listenHTTP console and API bind address
default_inputDefault preset filename
loop_fileLoop media file
media_dirDirectory scanned for MP4/FLV presets
MethodPathDescription
GET/api/stress/statusMetrics, session state, presets
GET/api/stress/presetsMP4/FLV list in media_dir
POST/api/stress/mediaUpload test file (multipart file)
DELETE/api/stress/mediaClear upload
POST/api/stress/push/{count}JSON {"remoteURL","presetFile?"}
POST/api/stress/pull/{count}JSON {"remoteURL"}
POST/api/stress/stop/pushStop push
POST/api/stress/stop/pullStop pull

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.

Attachments are also on GitHub Releases.

  1. Deploy Monibuca and verify ports/firewall.
  2. Run stress on a separate host when possible.
  3. Ramp from 1 push / 1 pull before scaling.
  4. Watch Monibuca Admin or APIs for server-side metrics; use the stress UI for client-side stats.
  5. Stop workloads via UI or API and confirm idle state.