直播软件自动化测试,基于SRS-Bench工具的直播平台性能测试

摘要:性能测试通过自动化的测试工具模拟正常、异常场景来对系统的各项性能指标进行测试。通过性能测试可以分析一个系统能力、瓶颈、关键问题等。本文结合直播平台的部分场景,使用开源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目录,里面就是各个压测工具的执行程序(部分操作系统可能编译不成功,可通过拷贝其他操作系统编译成功的工具直接使用)。

7bc0367aa8b909ea311b856100010a12.png

2.工具使用

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

ec2d8499ea9117ea1dabae8fe81b1b40.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会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pythontype函数使用_Python astype(np.float)函数使用方法解析

Python astype(np.float)函数使用方法解析 我的数据库如图结构我取了其中的name age nr,做成array,只要所取数据存在str型,那么取出的数据,全部转化为str型,也就是array阵列的元素全是str,不管数据库定义的…

计算机硬件加速怎么开,显卡硬件加速,小编教你电脑怎么开启显卡硬件加速

小编之前是不知道怎么开启显卡硬件加速的,后来是朋友教我,才知道原来开启显卡硬件加速并不难操作。所以今天小编也将者开启的方法分享给小伙伴们。让你们也知道怎么开启硬件加速。显卡硬件加速有什么作用呢?其实开启了显卡硬件加速&#xff0…

um是代表什么意思_女生约会心里都想什么?女生约会举动代表什么意思

在和女生约会的全过程中,女生的思绪通常都较为细致,1个目光、1个行为、1个中停……都将会蕴含了無限的含意,男生们假如愿意取得成功将女生追到手,很必须剖析一下下女生约会心里都想干什么,女生约会举动代表什么意思&am…

ubuntu mysql开发_ubuntu linux mysql 开发模式与连接编译

【源码 测试】#include #include #include int main(void){MYSQL_RES *result;MYSQL_ROW row;MYSQL *connection, mysql;int state;mysql_init(&mysql);connection mysql_real_connect(&mysql,"localhost","root","951241","mysql…

浅谈浏览器http的缓存机制

针对浏览器的http缓存的分析也算是老生常谈了,每隔一段时间就会冒出一篇不错的文章,其原理也是各大公司面试时几乎必考的问题。 之所以还写一篇这样的文章,是因为近期都在搞新技术,想“回归”下基础,也希望尽量总结的更…

计算机故障检修课过时,第三场公开课|电脑故障维修以及笔记本知识科普

原标题:第三场公开课|电脑故障维修以及笔记本知识科普等待了漫长的一个星期, R&D又带着满满的干货和大家见面啦~你没看错!!这次R&D带来了两份大大的干货给大家分别是大家关心的 电脑故障维修问题以及大家想要了解的 笔记本…

为什么说python是计算机语言的未来_Python这么火,为什么说它不是未来的编程语言?...

本文转载自公众号“读芯术”(ID:AI_Discovery) Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在。 虽然问世几十年后,Python才得到编程社区的重视。 但是,其发展的势头似乎无人能及。自2010年年初以来&#x…

win 杀掉占用的端口_Windows netstat 查看端口、进程占用、杀掉进程

转载:http://ywsm.iteye.com/blog/510670http://58582786.blog.51cto.com/1550000/671487目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用.操作:操作分为两步:(1)查看该端口被…

C++课程上 有关“指针” 的小结

上完了C的第二节课以后,觉得应该对这个内容进行一个小结,巩固知识点,并对我的心情进行了一个侧面烘托... 开始上课的老师: 正在上课的我: 上去敲代码的我: 过程是这样的: 下来的我: …

python安装路径查看_查看python安装路径及pip安装的包列表及路径

一、Linux系统 查看Python路径 whereis python 此命令将会列出系统所安装的所有版本的Python的路径效果如下:使用以下命令可分别查看Python2,Python3的安装路径 whereis python2 whereis python3 查看使用pip安装的软件包 默认Python3 pip list Python2查…

python循环10次_开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择...

开发一个循环 5 次计算的小游戏,设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择“、-、*”运算符,构成一个表达式,让用户计算式子结果并输入结果,如果计算结果正确则加一分,如果计算结果错误不…

配置java编译环境

2019独角兽企业重金招聘Python工程师标准>>> (1)我的电脑属性->高级系统配置->环境变量(2)点击第二个"新建(W)..."->输入变量名"JAVA_PATH",变量值"C:\Program Files\Java\jdk1.8.0_91"->确定(3)找系统变量中的Path并双击…

spring aop 必须的包 及里面用到的东西_Spring 原理初探——IoC、AOP

前言众所周知, 现在的 Spring 框架已经成为构建企业级 Java 应用事实上的标准了,众多的企业项目都构建在 Spring 项目及其子项目之上,特别是 Java Web 项目。Spring 的两个核心概念是 IoC(控制反转)和 AOP(面向切面编程)。想了解 Spring 的工…

Android平台和java平台 DES加密解密互通程序及其不能互通的原因

为什么80%的码农都做不了架构师?>>> 网上的demo一搜一大堆,但是,基本上都是一知半解(包括我)。为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DES 加密和Java DES加密…

PDM系统服务器管理,基于PDM的异地协同设计系统

基于PDM的异地协同设计系统随着经济全球化的不断发展,产品设计分工越来越细,产品协同设计团队越来越分散。由于产品设计的需要,分布在不同地方的设计人员和其他相关人员都要参与产品的开发过程,各自承担相应的设计任务&#xff0c…

flex 下对齐_Flex 布局示例

感谢阮一峰老师的教程http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html本示例将教程上所有的布局都简单的实现了一遍,并保存GitHub上面https://github.com/JailBreakC/flex-box-demo​github.com容器的属性1、flex-direction属性flex-direction属性决定主…

python读csv最快方法_使用Python读写csv文件的三种方法

Python读写csv文件觉得有用的话,欢迎一起讨论相互学习~Follow Me前言逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件…

url过滤怎么解除_Shiro-实战(四)---过滤器机制

1 简介Shiro使用了与Servlet一样的Filter接口进行扩展 1.1 NameableFilterNameableFilter给Filter起个名字,如果没有设置默认就是FilterName 当我们组装拦截器链时会根据这个名字找到相应的拦截器实例1.2 OncePerRequestFilter用于防止多次执行Filter,也就是说一次请…

django使用LDAP验证

1.安装Python-LDAP(python_ldap-2.4.25-cp27-none-win_amd64.whl)pip install python_ldap-2.4.25-cp27-none-win_amd64.whl 2.安装django-auth-ldap(django-auth-ldap-1.2.8.tar.gz)(下载:https://pypi.py…

风变的python课程怎么样_风的解释|风的意思|汉典“风”字的基本解释

【戌集下】【風】 風康熙筆画:9 部外筆画:0〔古文〕 𠙊 𠙈凬飌檒【唐韻】方戎切【集韻】方馮切【正韻】方中切, 𠀤音楓。風以動萬物也。【莊子齊物論】大塊噫氣,其名爲風。【河圖】風者&#x…