• 0
  • 0
分享
  • 基于SRS-Bench工具的直播平台性能测试
  • 饭团🍙 2020-09-23 16:16:46 字数 2889 阅读 10749 收藏 0

  摘要:性能测试通过自动化的测试工具模拟正常、异常场景来对系统的各项性能指标进行测试。通过性能测试可以分析一个系统能力、瓶颈、关键问题等。本文结合直播平台的部分场景,使用开源SRS-Bench工具对直播并的4个场景进行压力测试,测试直播平台的基础能力。

  一 、性能测评工具简介

  性能测试范围较广,包含负载测试、压力测试等,负载测试可以确定在满足性能指标情况下,系统能承受的最大负载,压力测试可以确定在什么负载条件下系统性能处于失效状态,获得系统能提供的最大的服务级别,一般系统上线前均会进行性能测试。目前,较常用的性能测试工具分为商业测试工具、开源测试工具,较为常用的是Loadrunner及JMeter。Loadrunner支持HTTP、windows Sockets、FTP、SMTP、DNS协议,JMeter为Apache组织开发的基于Java的开源压力测试工具,最初应用于web应用测试,目前可支持Web-http,https,SOAP/Rest、FTP、SMTP、POP3、IMAP、TCP等协议。本次测试目标为测试直播平台的能力,国内常见的直播协议有RTMP、HLS、HTTP-flv、RTP协议,被测的直播平台使用开源SRS,主要支持RTMP/HTTP-flv/HLS三种协议,Loadrunner、JMeter对上述协议支持较差,如果使用二次开发工作量较大,调研发现可使用SRS-Bench工具作为测试工具对多人同时直播、多人同时观看、直播观看混合场景、直播录制4个场景进行测试。

  二、工具安装与使用

  1.工具安装

  从https://github.com/ossrs/srs-bench将下载的SRS-Bench源码压缩包放到待运行的linux环境下解压缩,使用./configure && make安装编译会出现objs目录,里面就是各个压测工具的执行程序(部分操作系统可能编译不成功,可通过拷贝其他操作系统编译成功的工具直接使用)。

图1.png


  2.工具使用

  SRS-Benc主要包括sb_rtmp_publish、sb_rtmp_load、sb_rtmp_load_fast、sb_hls_load、sb_http_load五个工具,具体使用可通过-h命令查看。

图2.png


  三 测试环境介绍

  1.直播服务器

  对直播服务器媒体性能的测试要考虑单机性能和集群性能,因此本次直播服务器测试环境先对单机进行性能测试,通过单机性能,结合业务场景估算集群环境的部署情况。

  2.压力机

  压力机可以起多个推拉流进程,每个进程可以模拟1000个以内的并发推拉流。

  3.网络和负载均衡

  服务器、压力机均部署在同一局域网内,局域网采用千兆网络,网络延迟可忽略不计。

  4.测试视频文件

  测试视频文件采用windows自带的示例高清视频wildlife.flv,视频相关参数为:

  Audio: profile=LC, 2channels, 44100HZ

  Video: profile=High, level=3.1, 1280x720

  四、不同直播场景下测试解决方案

  1.多人同时直播

  多人同时直播实际上是多人同时向直播服务器进行推流,可使用SRS-Bench对单节点进行并发推流模拟场景,业界常用的推流协议为rtmp协议,使用sb_rtmp_publish -i /home/aaa.flv -c 1000 -r rtmp://X.X.X.X:1935/live/stream_1_{i}进行测试,要注意房间号的设置要将各个进程区分开,压力端执行sb_rtmp_publish后会打印出每个推流进程并发推流路数threads、成功路数alive、持续时长duration以及读写的流量等指标,服务端可使用netstat命令查看推流连接数,使用nmon工具可查看服务器资源使用情况,测试过程中使用拉流播放器随机抽取播放多路直播流验证推流成功情况及播放卡顿情况。

  经过测试,当推流路数达到一定值后,资源消耗严重,连接数丢失,视频播放卡顿严重,建议单节点不超过3000路。

  2.多人同时观看直播

  多人同时观看直播时,若接入CDN,播放端选择就近的CDN节点进行拉流播放,此时拉流压力在CDN;若未接入CDN,播放端从直播源站进行拉流,因此可以使用sb_rtmp_load 进行测试。首先使用sb_rtmp_publish工具模拟1路推流至服务器,确认可播放后,执行命令sb_rtmp_load  -c 1000 -r  rtmp://X.X.X.X:1935/live/stream进行测试。经过测试,在基本保证效果的前提下,建议单节点并发拉流数不超过3000路。

  3.混合场景

  部分小型直播平台由于需求规模小,既不接入CDN,也不单独设定边缘节点Edge,直接使用源站既进行推流也进行拉流。这里对单节点进行500~1500路并发推拉流进行性能测试。

  以500路并发推拉流为例,首先使用sb_rtmp_publish工具模拟500路推流至服务器,执行命令:

  sb_rtmp_publish -i /home/aaa.flv -c 500 -r rtmp://X.X.X.X:1935/live/stream_{i},根据场景选择每路视频的拉流人数,脚本如下:

   #! /bin/bash
  for i in {0..499}
  do
  nohup ./sb_rtmp_load -c 1 -r rtmp://X.X.X.X:1935/live/stream_{i} >load.log&
  done

  经过测试,当1500路直播同时推拉流时,服务器处于严重中断负载,且实际播放效果严重卡顿,建议混合场景单节点不超过1500路。

  4.直播录制

  对于部分直播场景如培训、会议等,需要将现场直播视频保存以进行传播、留存等使用,有对直播进行录制的需求。首先对SRS服务器进行录制配置,在所用的vhost下配置dvr:

   dvr {
       enabled      on;
       dvr_path     /nas/record/[app]/[stream].[timestamp].flv;
       dvr_plan     session;
  }

  重新加载SRS配置后,在压测端使用sb_rtmp_publish工具进行并发推流测试,录制场景除了进行服务器资源、连接数监控及直播流播放验证,还需监控录制文件大小以作为空间评估标准。

  经过测试,录制消耗CPU比较严重,建议单节点推流录制不超过500路,每分钟录制文件大小为37.5M,可为磁盘空间提供参考。

  五 结论

  本文通过使用开源SRS-Bench性能测试工具对开源的SRS单机直播服务器进行性能测试,通过测试4个场景发现单机直播平台的能力,为后续直播平台上线预估资源、支撑能力打下坚实基础,提供有力支撑。


作者:艾明浩、贾秋菊   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1.接口定义:接口普遍有两种意思,一种是API(ApplicationProgramInterface),应用编程接口,它是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。而另外一种则是Interface,它是面向对象语言如java,c#等中一个规范,它可以实现多继承的功能。接口测试中的接口指的是API。为什么要使用接口:假如公司的产品前端开发还没开发完,接口开发好了。有天领导说,小王,你测下这个登录功能,要是你不懂接口的话就会对领导说这个功能测不了啊,页面没开发完。接口测试是不需要看前端页面的,可以更早的介入到测试工作中,提高工作效率。根据测试金字塔,越底层成本越低,...
            13 13 2645
            分享
          • 前言如今的测试行业,各种测试平台盛行,比如自动化的有接口自动化平台、UI自动化平台、Mock平台、造数平台,性能方面的还有压测平台、监控平台。测试开发基础,教你做一个完整功能的Web平台之环境准备这些平台一方面大大解放了功能测试的双手,提高了测试效率,同时也成为测试人员升职加薪的筹码。因此,学习并掌握Web平台的开发还是很有必要的。说到Web平台,很多人第一印象就是头疼的html、css、JavaScript、jquery,这些东西难道要一个个手动来敲吗?样式要一个个手动来调吗?做出来的东西很丑陋怎么办?如果现在对你说,远没有你想象的那么复杂,Vue和Element UI中有很多美观方便的前端...
            0 0 1296
            分享
          • 看了这篇文章,再也不会有人说有没有测试都一样了。测试和开发的工作方式是不太一样的,开发属于开创型,从无到有,可能我写一天代码,一个功能就写完了。是0分到60分的开创。但是测试工作是属于提升型的,测一轮,软件好用加一个度,再测一轮再加一个度,是60分到90分的进阶。很显然,不能用开发的工作方式来度量测试的存在。测试的工作产物,简单分为四个方向:【测试用例】版本测试用例,公共测试用例,都是项目的宝贵资产,甚至在参加一些大型的cmmi项目认证时,都是需要提供测试用例的。【测试报告】测试时间,测试内容,发现的问题,存在的问题,对测试过程形成的总结也可以对版本质量形成佐证。【bug分析】bug分析中,哪...
            5 5 6487
            分享
          •   Arthas介绍  Arthas是Alibaba开源的Java诊断工具,采用命令行交互模式,提供了丰富的功能,是Java 相关问题排查和性能优化的强大工具。为了明显区分 CPU 耗时和内存占用,分别写了 string 操作的三种方式:String,StringBuffer,StringBuilder。下面将根据这个Demo来对Arthas 进行介绍。  下载  GitHub下载Arthas(https://github.com/alibaba/arthas) 最新Release版本  启动  下载解压后直接用脚本方式“./as.sh”来启动,或者用Java命令“$ java -jar ar...
            14 13 1410
            分享
          •   1、引言  在撸码过程中,99.1%的大佬,都不敢说自己的撸出来的代码,是不需要debug的。换句话说,码农在撸码过程中,最痛苦的,莫过于撸出来的代码,为了能避坑,小鱼也是在撸码过程中,总结的一点避坑方法,请各位大佬笑纳。  2、避坑内容总结  2.1无法定位到元素  遇到问题:  找不到元素,脚本报“NoSuchElementException:Unable to find element”,或"定位到了,不能操作,点击无效。  解决方法:  1)查看自己的“属性值”是否写正确  2)元素的标签不唯一,默认找到第一个  3)向上查看,元素是否在frame或iframe框架中  ...
            0 0 1346
            分享
      • 51testing软件测试圈微信