srs-bench 针对特定业务性能测试并发推流 解决方案

来源:互联网 发布:淘宝店买什么好 编辑:程序博客网 时间:2024/06/06 07:11
srs-bench 针对特定业务性能测试并发推流 解决方案

         srs-bench 相信做过直播流并发测试的并不陌生,不在这过多介绍,见srs-bench 官网:https://github.com/ossrs/srs-bench

特定业务说明:
        项目在对推流服务端做了限制,推流成功不是简单将 流推到服务端,推流是,需要调用添加流(add steam )API添加一条流信息,添加成功后会返回值中有token值。简单说下,就是推流时,需要带认证的token。
        srs-bench中 sb_rtmp_publish 的局限性在于,在推流时,没有token处理这些功能,比如:
 ./sb_rtmp_publish -i doc/source.200kbps.768x320.flv -c 1000 -r rtmp://127.0.0.1:1935/live/livestream_{i}
这里意思是将1000路流推到 服务端,流的名称为livestream_{i}。
那么问题来了,根据上述业务需要,推流到服务端需要认证的token,所以这样的话,sb_rtmp_publish本省的这种机制就不能满足要求。我们就需要一个替代方案。

解决方案:
(1)利用Linux多进程机制,让sb_rtmp_publish以多进程运行。每个进程跑一路推流。
./sb_rtmp_publish -i ../doc/source.200kbps.768x320.flv -c 1 -r rtmp://192.168.1.26:1935/live/PFM_test_HD_test${i}?token=${line} 
(2)sb_rtmp_publish是在前端运行,需要改为 在后端运行,用nohup 
nohup ./sb_rtmp_publish -i ../doc/source.200kbps.768x320.flv  -c 1 -r rtmp://192.168.1.26:1935/live/PFM_test_HD_test${i}?token=${line}   >pfm_logs/logpfm 2>&1 &
(3)Token存在一个文件中,写个shell命令从token文件去读取,有多少token就会产生多少路推流。
完成shell 命令如下:
#!/bin/sh  i=0  cat data|while read line  do    let i=${i}+1    #echo ${line}${i}    nohup ./sb_rtmp_publish -i ../doc//source.200kbps.768x320.flv -c 1 -r rtmp://192.168.1.26:1935/live/PFM_test_HD_test${i}?token=${line}   >pfm_logs/logpfm 2>&1 &  #sleep 10s  done  
(4)至于token怎么来,需要根据具体的业务,写代码代调用API生成,并把这些token写到一个文件中。
至此方案结束。