SRS-Bench 使用教程

SRS-Bench 使用教程

srs-benchSB(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.项目地址:https://gitcode.com/gh_mirrors/sr/srs-bench

项目介绍

SRS-Bench(SB)是一个用于SRS和其他媒体服务器的基准测试和回归测试工具集。它支持HTTP-FLV、RTMP、HLS、WebRTC和GB28181协议。SRS-Bench可以帮助开发者模拟大量客户端的负载测试,进行回归测试和黑盒测试,以确保媒体服务器的性能和稳定性。

项目快速启动

下载代码和编译

首先,从GitHub克隆SRS-Bench项目代码:

git clone -b feature/rtc https://github.com/ossrs/srs-bench.git
cd srs-bench

然后,编译项目:

make

编译完成后,会在objs目录下生成多个测试工具,如srs_benchsrs_test等。

运行测试

以RTMP推流测试为例,使用以下命令:

./objs/srs_bench -c conf/rtmp.conf

具体参数可以通过-h选项查看:

./objs/srs_bench -h

应用案例和最佳实践

直播平台性能测试

SRS-Bench可以用于测试直播平台的性能,包括多人同时直播、多人同时观看、直播观看混合场景和直播录制等。以下是一个多人同时直播的测试案例:

./objs/sb_rtmp_publish -i /path/to/video.flv -c 1000 -r rtmp://localhost/live/stream

最佳实践

  1. 环境准备:确保测试环境与生产环境尽可能相似,包括网络带宽、服务器配置等。
  2. 逐步增加负载:从较低的并发开始,逐步增加负载,观察系统性能变化。
  3. 监控和日志:在测试过程中,实时监控系统资源使用情况,并记录日志以便分析。

典型生态项目

SRS

SRS(Simple-RTMP-Server)是一个开源的流媒体服务器,支持RTMP、HTTP-FLV和HLS协议。SRS-Bench与SRS配合使用,可以进行全面的性能测试和回归测试。

Janus

Janus是一个开源的WebRTC服务器,SRS-Bench也支持对Janus进行性能测试,帮助开发者优化WebRTC应用的性能。

通过以上步骤和案例,您可以快速上手SRS-Bench,并利用它进行高效的媒体服务器性能测试。

srs-benchSB(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.项目地址:https://gitcode.com/gh_mirrors/sr/srs-bench

SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS,包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRSSRS还支持将接入的RTMP流进行各种变换,譬如将RTMP流转码、转发给其他服务器、转封装成HTTP-FLV流、转封装成HLS、转封装成HDS、录制成FLV。SRS包含支大规模集群如CDN业务的关键特性,譬如RTMP多级集群、VHOST虚拟服务器、无中断服务Reload、HTTP-FLV集群。此外,SRS还提供丰富的应用接口,包括HTTP回调、安全策略Security、HTTP API接口、RTMP测速。SRS在源站和CDN集群中都得到了广泛的应用Applications。 最新版本SRS 2.0-258 ,使用cygwin 在windows下的编译 。 修改代码 setrlimit (2048) ,使其默认能支持 2048个连接 在i7笔记本上 ,测试 500路视频转发 ,srs.exe进程 占用cpu 5%,出奇的低。 以下是 编译错误笔记和修改的配置项。 *.修改 Makefile CXXFLAGS = -ansi -Wall -g -O0 -fPIC -std=gnu++11 -D__GLIBC__=2 -D__GLIBC_MINOR__=31 -DFD_SETSIZE=2048 1.depends.sh what a fuck, os not supported. ingore it !!!! 2. make[1]: 进入目录“/mnt/srs-2.0-r5/trunk/objs/st-1.9” if [ ! -d LINUX_3.0.4(0.338/5/3)_DBG ]; then mkdir LINUX_3.0.4(0.338/5/3)_DBG; f i /bin/sh: -c:行0: 未预期的符号 `(' 附近有语法错误 /bin/sh: -c:行0: `if [ ! -d LINUX_3.0.4(0.338/5/3)_DBG ]; then mkdir LINUX_3.0.4 (0.338/5/3)_DBG; fi' make[1]: *** [Makefile:348:LINUX_3.0.4(0.338/5/3)_DBG] 错误 1 make[1]: 离开目录“/mnt/srs-2.0-r5/trunk/objs/st-1.9” make: *** [Makefile:441:linux-debug] 错误 2 build st-1.9 failed, ret=2 3.depends.sh make cygwin-debug 提示 static lib failed. # st-1.9 # Some platforms allow to define FD_SETSIZE (if select() is used), e.g.: DEFINES += -DFD_SETSIZE=4096 ##################################################################################### if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then # check the cross build flag file, if flag changed, need to rebuild the st. _ST_MAKE=linux-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_EPOLL -DMALLOC_STACK" 4.install CherryPy-3.2.4" require sudoer failed 解压 CherryPy-3.2.4.zip 至 objs目录 4.1 local_ip.sh 改成 ip='0.0.0.0' #ip=`ifconfig|grep "inet "|grep -v "127.0.0.1"|awk -F 'inet ' 'NR==1 {print $2}'|awk '{print $1}'|sed "s/addr://g"` 5. libst.def st_get_eventsys_name @112 st_set_eventsys @113 ibssl.a objs/openssl/lib/libcrypto.a -ldl /usr/lib/gcc/i686-pc-cygwin/7.4.0/../../../../i686-pc-cygwin/bin/ld: objs/src/ap p/srs_app_st.o: in function `Z11srs_st_initv': /mnt/srs-2.0-r5/trunk/src/app/srs_app_st.cpp:217: undefined reference to `st_set _eventsys' /usr/lib/gcc/i686-pc-cygwin/7.4.0/../../../../i686-pc-cygwin/bin/ld: /mnt/srs-2. 0-r5/trunk/src/app/srs_app_st.cpp:219: undefined reference to `st_get_eventsys_n ame' /usr/lib/gcc/i686-pc-cygwin/7.4.0/../../../../i686-pc-cygwin/bin/ld: /mnt/srs-2. 0-r5/trunk/src/app/srs_app_st.cpp:222: undefined reference to `st_get_eventsys_n ame' /usr/lib/gcc/i686-pc-cygwin/7.4.0/../../../../i686-pc-cygwin/bin/ld: /mnt/srs-2. 0-r5/trunk/src/app/srs_app_st.cpp:229: undefined reference to `st_get_eventsys_n ame' collect2: 错误:ld 返回 1 make[2]: *** [objs/Makefile:302:objs/srs] 错误 1 make[2]: 离开目录“/mnt/srs-2.0-r5/trunk” make[1]: *** [Makefile:38:server] 错误 2 make[1]: 离开目录“/mnt/srs-2.0-r5/trunk” make: *** [Makefile:8:default] 错误 2 6. ulimit -n 2048 srs_app_config.cpp 增加代码修改 进程可打开的最大文件描述词大一的值,超出此值,将会产生EMFILE错误 rlimit l; getrlimit(RLIMIT_NOFILE,&l); l.rlim_cur = get_max_connections() + 100; setrlimit(RLIMIT_NOFILE, &l); srs_info("setrlimit => soft:%d , hard:%d\n",(int)l.rlim_cur,(int)l.rlim_max);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘惟妍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值