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

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写到一个文件中。
至此方案结束。

你可能感兴趣的:(性能测试,互联网视频直播技术,操作系统,Window,Linux)