直播软件自动化测试,基于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目录,里面就是各个压测工具的执行程序(部分操作系统可能编译不成功,可通过拷贝其他操作系统编译成功的工具直接使用)。
2.工具使用
SRS-Benc主要包括sb_rtmp_publish、sb_rtmp_load、sb_rtmp_load_fast、sb_hls_load、sb_http_load五个工具,具体使用可通过-h命令查看。
三 测试环境介绍
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软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
直播软件自动化测试,基于SRS-Bench工具的直播平台性能测试相关推荐
- 直播软件搭建技术原理:CDN 与直播
直播软件搭建技术原理:CDN 与直播 很多直播都是基于 CDN 来实现的.而通过声网的服务,或基于声网SDK与 CDN 结合,还可以实现在直播中的连麦互动.白板同步等强调实时性的场景.本文源自社区投稿 ...
- “一对一直播软件”的开发,离不开直播源码开发+系统搭建
大家的生活中已经离不开互联网,据数据显示,移动互联网的用户人均每天上网时长达到5小时.看视频.网络直播成为人们娱乐方式之一.其中一对一直播软件开发也越来越受到大家的喜爱. 一对一直播软件开发的功能: ...
- 直播软件开发,独特功能简介,“直播+”成标配
直播软件开发对于一家直播平台来讲算是核心的内容,纵观当今直播行业之中几家比较有名的直播平台,都是有着比较先进精细的直播开发.那么直播源码都能搭建出什么样的功能呢?以**直播为例,简单说一些基本的方面; ...
- 烟花智能直播助手,直播带货必备爆单工具【直播助手脚本+技术教程】
烟花智能直播助手软件教程介绍: 1.账号管理:可以登陆多个账号,一键切换 2.商品批量管理:可一键删除/添加直播商品,一键设置商品卖点 3.自动弹讲解:可设置指定,单个,列表循环自动弹商品讲解 4.智 ...
- 美女直播这么火,那你知道怎么测试直播软件吗?
作为互联网的新生力量,一种新型的社交互动方式,直播软件快速在互联网行业占有一席之地. 市场上对于直播软件的开发应用也越来越多,直播软件的框架?直播软件的原理?直播软件的功能点?直播软件测试关注点?想了 ...
- ios查看帧率的软件_程序员必看!直播软件开发弱网下保障高清流畅推流的方法...
通常情况下程序员在开发直播软件时,优化卡顿和延迟是比较多的,只要是优化欠佳,就会导致前端APP运行出问题,为了帮助程序员在开发过程中能更加合理有效的优化,小编在这里从开发的层面简要介绍一下影响直播体验 ...
- 认真测试直播软件,直播这么火,你知道怎么测试直播软件吗?
作为互联网的新生力量,一种新型的社交互动方式,直播软件快速在互联网行业占有一席之地.市场上对于直播软件的开发应用也越来越多,直播软件的框架?直播软件的原理?直播软件的功能点?直播软件测试关注点?想了解 ...
- 直播软件开发公司来告诉你什么是互动直播
直播软件开发公司来告诉你什么是互动直播 互动直播是多路音视频以及数据实时通信的解决方案. 首先看一下我们又拍云自己的应用场景.又拍云是由杭州研发总部加上北京.上海.广州等多家分公司组成的.我们的管理层 ...
- 视频直播软件开发关于亚马逊s3接入方式,视频直播源码创建存储桶方法
一.登录亚马逊账户,进入S3 建立新的存储桶,用于视频直播源码的文件存储. 注册 Amazon S3 后,您就可以开始使用 AWS 管理控制台 创建存储桶.Amazon S3 中的每个对象都存储在存储 ...
最新文章
- php文章列表样式,css列表样式有哪些?css设置列表样式的方法
- 一文了解 lambda 用法与源码分析
- GCC 和 MDK (即 Keil) 手工指定其地址及指针
- dav1d 0.5.1:更快!
- ai中导入sketch_在Sketch中营造深度感
- 聊聊自己的高效学习方法~
- 3D重建 | 近5年前沿方法引用量TOP10工作汇总
- Pentium的指令系统(3)——算术运算指令
- 测试3.0u盘速度软件,SanDisk USB3.0接口的U盘测试
- 电信光猫/烽火HG6543c1光猫超级密码获取改桥接模式( 中国电信浙江公司定制天翼网关3.0)
- 密码学常用数学计算软件sagemath安装使用
- 微擎安装模块出现 Connection timed out after 60000 milliseconds
- java图片缩放工具类_JAVA操作图片裁切与缩放的一个工具类(个人收藏)
- 局域网服务器如何设置代理访问公网
- Android桥方法设置GPS信号,android-GPS更新间隔更快,信号良好?
- Pr:创建和使用收录预设
- 第六章第三十四题(打印日历)(Print calendar) - 编程练习题答案
- VmatrixOJ--解码游戏
- 编程之美-2.3-寻找发帖“水王”
- 弹出新网页在新的对话框中打开
热门文章
- nikita popov php,PHP中对performance的考虑点
- violinplot如何看懂_一张图告诉你如何看懂个股大趋势
- win10 使用ssh连接服务器 ‘’Bad owner or permissions on C:\\Users\\Administrator/.ssh/config‘’
- Shell学习之结合正则表达式与通配符的使用(五)
- requests库入门09-OAUTH认证
- 【转载】细聊冗余表数据一致性(架构师之路)
- “玲珑杯”线上赛 Round #15 河南专场 F		咸鱼文章
- Django1.9开发博客06- 模板继承
- 开源Registry项目Harbor源代码结构解析
- 团队项目—第二阶段第三天