音视频压测工具,包括RTMP/FLV/WebRTC/GB28181等,未来还会完善。
SB(SRS Bench) is a set of benchmark and regression test tools, for SRS and other media servers, supports HTTP-FLV, RTMP, HLS, WebRTC and GB28181.
For RTMP/HLS/FLV benchmark, please use branch master.
git clone -b feature/rtc https://github.com/ossrs/srs-bench.git && cd srs-bench && make
编译依赖golang环境 ubuntu16.04安装高版本 golang
flag provided but not defined: -mod
到官网:All releases - The Go Programming Language查找对应的版本
wget https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz --no-check-certificate
tar -xvf go1.20.linux-amd64.tar.gz
vi ~/.bashrc
//设置环境变量export GOPATH=$HOME/go_1.20/go
export PATH=$PATH:$GOPATH/binsource ~/.bashrc
//test
go version
go version go1.20 linux/amd64
make
下载依赖报错
尝试手动下载 失败
go get -u golang.org/x/sys
更改GO源
t@ubuntu:~/go_1.20$ go env -w GOPROXY=https://goproxy.cn,direct
设置完之后,我以为直接生效了,又去go get了一下,发现还是报一样的错,有点失望,原来需要依赖于 go module 功能,即go的环境变量GO111MODULE要打开,如何打开?如下命令即可,在终端执行
go env -w GO111MODULE=on
下载依赖
go mod vendor
make
编译会生成下面的工具:
./objs/srs_bench
压测,模拟大量客户端的负载测试,支持SRS、GB28181和Janus三种场景。./objs/srs_test
回归测试(SRS),SRS服务器的回归测试。./objs/srs_gb28181_test
回归测试(GB28181),GB服务器的回归测试。./objs/srs_blackbox_test
黑盒测试(SRS),SRS服务器的黑盒测试,也可以换成其他媒体服务器。Note: 查看工具的全部参数请执行
./objs/xx -h
注意 srs-bench分支 不同分支测试目标不同
webrtc: feture/rtc分支
rtmp;tree/srs-librtmp
./objs/srs -c conf/console.conf
直播播放压测,一个流,很多个播放。
首先,推流到SRS:
然后,启动压测,比如100个:
通过 ./objs/srs_bench -h命令,我们可以查看srs-bench提供了哪些压测的手段:
./objs/srs_bench -sr webrtc://192.168.1.116/live/livestream -nn 100
压测过程如何查看srs服务器的性能呢,有两种方式:
dstat -tglmsn --top-cpu --top-mem --top-io
srs服务没有开多进程或者多线程来处理高并发 内部通过协程来实现高并发 ,100多播放一路 1280*720 i5cpu 16G内存 cpu已占用 50% 内存剩余2G
上述srs 下行播放并发压测比较简单 rtmp hls等压测 参照官网
SRS Server - 高性能、高并发、高扩展性和可读性的网络服务器架构 | SRS