<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="流媒体压力测试程序编译与使用">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-06-10 20:10<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
流媒体压力测试程序编译与使用




srs-bench


webRTC协议压力测试（新）


Github：https://github.com/ossrs/srs-bench


hls/http/rtmp-play/rtmp-publish/flv压力测试（经典）


Github：https://github.com/ossrs/srs-bench/tree/master


gitee（国内）：https://gitee.com/ossrs/srs-bench


服务器负载测试工具SB(SRS Bench)：


模拟huge并发：2G内存就可以开300k连接。基于states-threads的协程。


支持HLS解析和测试，下载ts片后等待一个切片长度，模拟客户端。支持HLS点播和直播。执行程序：./objs/sb_hls_load


支持HTTP负载测试，所有并发重复下载一个http文件。可将80Gbps带宽测试的72Gbps。执行程序：./objs/sb_http_load 


支持RTMP流播放测试，一个进程支持5k并发。执行程序：./objs/sb_rtmp_load


支持RTMP流推流测试，一个进程支持500个并发。执行程序：./objs/sb_rtmp_publish


RTMP协议使用高性能服务器SRS(SimpleRtmpServer)的协议栈。




下载编译过程：




XML/HTML代码


    安装编译需要组件：

    apt-get -y install git curl wget uzip build-essential cmake

    下载编译：

    git clone https://github.com/ossrs/srs-bench.git

    git checkout master

    ./configure

    make





编译srs-bench，出现http_parser.c:2093:18: error: this statement may fall through [-Werror=implicit-fallthrough=] found_at = 1;


原因是http-parser的编译同时打开了-Wall -Wextra -Werror


-Wimplicit-fallthrough，是C++17标准引入的警告选项，因为这个地方没有break。如果编译时有编译选项-Wextra，该编译选项将添加。-Werror将警告视为错误报出。






解决方案


vim objs/http-parser-2.1/Makefile


把其中的     CFLAGS += -Wall -Wextra -Werror


改为           CFLAGS += -Wall -Wextra


再把config文件中的解压的那两行改为


#rm -rf ${GLOBAL_DIR_OBJS}/http-parser-2.1 &amp;&amp; cd ${GLOBAL_DIR_OBJS} &amp;&amp; unzip ../3rdparty/http-parser-2.1.zip &amp;&amp;


cd objs/http-parser-2.1 &amp;&amp;


再重新./configure就OK啦。


其实就是给Makefile文件中 -Werror 去掉，然后根目录的 configure 文件中删除http-parser-2.1文件重新解压的命令前面加上#注释掉，不让刚才修改的删除了，当然也可以直接给 3rdparty/http-parser-2.1.zip 这个文件中Makefile修改下上传，就可以直接编译。编译的程序在 objs 目录中。




docker直接测试：




XML/HTML代码


    docker run --rm -it --network=host --name sb ossrs/srs:sb \

        ./objs/sb_rtmp_load -c 1 -r rtmp://127.0.0.1:1935/live/livestream

    For HTTP-FLV benchmark:

     

    docker run --rm -it --network=host --name sb ossrs/srs:sb \

        ./objs/sb_http_load -c 1 -r http://127.0.0.1:8080/live/livestream.flv

    For HLS benchmark:

      

    docker run --rm -it --network=host --name sb ossrs/srs:sb \

        ./objs/sb_hls_load -c 1 -r http://127.0.0.1:8080/live/livestream.m3u8

    Or from Aliyun mirror:

      

    docker run --rm -it --network=host --name sb \

        registry.cn-hangzhou.aliyuncs.com/ossrs/srs:sb \

        ./objs/sb_rtmp_load -c 1 -r rtmp://127.0.0.1:1935/live/livestream




使用命令 docker kill sb 可以直接关闭并删除程序。
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
