压力测试工具 stress
stress 是面向 Monibuca 服务器的独立压测程序,与 Monibuca 进程分离部署。使用原生 RTMP / RTSP / HTTP-FLV / HLS 等客户端,以 MP4 或 FLV 文件循环作为媒体源,不依赖 FFmpeg,可对目标服务器施加可规模的推流与拉流负载。
| 能力 | 说明 |
|---|---|
| 多协议推流 | RTMP、RTSP;完整构建另含 SRT 推流、WebRTC WHIP 推流 |
| 多协议拉流 | HTTP-FLV、HLS、RTSP、RTMP |
| 媒体源 | 本地 MP4/FLV 循环;Web UI 可上传测试文件 |
| 控制台 | 默认 http://localhost:8787/,启停推拉、查看连接与码率 |
| CLI | 无界面批量压测、定时结束、适合 CI / 脚本 |
| 与 Monibuca 关系 | 仅需目标地址可达,不要求 Monibuca 开启内置压测 API |
- 启动 Monibuca(例如 安装部署 中的默认端口)。
- 下载并解压对应平台的 stress 包(见下方下载),或使用仓库内
cargo build -p stress --release --features full自行编译。 - 将测试用 MP4 放在工作目录(默认查找
test.mp4,可在配置中修改default_input)。 - 启动 stress:
./stress --config config.yaml- 浏览器打开 **http://localhost:8787/**,配置推流 URL(如
rtmp://127.0.0.1:1935/live/stress_%d)与路数后启动;拉流示例:http://127.0.0.1:8180/live/stress_0.flv。
CLI 示例
Section titled “CLI 示例”# 仅 Web UI + API./stress --config config.yaml
# 启动时推 10 路 RTMP,保留控制台./stress --push 10 --push-url rtmp://127.0.0.1:1935/live/test_%d
# 推 5 路、拉 20 路,运行 120 秒后退出(不监听 HTTP)./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%d 在 URL 中会被替换为连接序号,用于多路不同流名。
发布包内附带示例 config.yaml:
listen: "0.0.0.0:8787"default_input: "test.mp4"loop_file: truemedia_dir: "."| 字段 | 说明 |
|---|---|
listen | HTTP 控制台与 API 监听地址 |
default_input | 未指定文件时使用的预设名 |
loop_file | 是否循环播放媒体文件 |
media_dir | 扫描本地 MP4/FLV 预设的目录 |
HTTP API(控制台运行时)
Section titled “HTTP API(控制台运行时)”| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/stress/status | 指标、会话状态、已扫描预设 |
| GET | /api/stress/presets | media_dir 中的 MP4/FLV 列表 |
| POST | /api/stress/media | 上传测试文件(multipart file) |
| DELETE | /api/stress/media | 清除已上传文件 |
| POST | /api/stress/push/{count} | JSON {"remoteURL","presetFile?"} 启动推流 |
| POST | /api/stress/pull/{count} | JSON {"remoteURL"} 启动拉流 |
| POST | /api/stress/stop/push | 停止推流 |
| POST | /api/stress/stop/pull | 停止拉流 |
与 Monibuca 主程序下载 相同,预编译包由 Release CI 发布到 https://download.m7s.live:
- 正式版:
https://download.m7s.live/bin/<文件名> - Beta:
https://download.m7s.live/beta/<文件名>
解压后包含 stress(或 Windows 下 stress.exe)及示例 config.yaml。Linux / macOS 包内二进制名分别为 stress_linux_*、stress_darwin_*。
| 平台 | 正式版(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 |
| 平台 | 正式版(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”| 平台 | 正式版(bin) | Beta(beta) |
|---|---|---|
| windows / amd64 | stress_v6_windows_amd64.zip | stress_v6_windows_amd64.zip |
也可在 GitHub Releases 获取与 tag 绑定的同名附件。
典型压测流程
Section titled “典型压测流程”- 在一台(或多台)机器上部署 Monibuca,确认推流/拉流端口与防火墙。
- 在另一台机器运行 stress,避免与服务器争抢 CPU。
- 先小规模验证(如推 1 路、拉 1 路),再在控制台逐步提高路数。
- 通过 Monibuca Admin 或 API 观察连接数、码率与延迟;stress 控制台查看客户端侧统计。
- 结束后在 UI 或 API 停止推拉,确认状态归零。
联系我们
微信公众号:不卡科技
腾讯频道:流媒体技术
QQ 频道:p0qq0crz08
QQ 群:751639168