直播软件自动化测试,基于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,不管数据库定义的…

多线程的概述(一)

程序 :由源代码生成的可执行应用 QQ.app 进程 :一个正在运行的程序可以看作是一个进程,拥有独立运行所需的全部资源线程 :程序中独立运行的代码段一个进程是由一个或多个线程组成。进程只负责资源的调度和分配,线程才是…

python中缩进在程序中_python代码缩进

习惯了java,c之类的宽容,初学python,被它摆了道下马威,写if else,竟然必须要我正确用缩进格式,原来在python里不能用括号来表示语句块,也不能用开始/结束标志符来表示,而是靠缩进来表…

软件测试项目计划书总结,软件测试项目计划书.doc

PAGEPAGE 11HM项目计划书项目组长:王菁菁项目组成员:李应琴 张桦 李小兰 张力芳1概述产品简介为加强中国光大银行零售业务基础性建设、提升客户群体规模,借助近年来房地产市场蓬勃发展的机遇,总行决定开展物业专项维修资金业务&am…

python修改密码业务_Python: 修改LDAP密码

一个简单的用Python修改LDAP密码的程序,测试通过1. 首先要安装Python的LDAP包,在Ubuntu下面是:apt-get install python-ldap2. 例子代码:import ldap# 修改LDAP密码# uid: LDAP uid# oldpwd: 旧密码# newpwd: 新密码def change_pa…

C语言实现用户输入

用户输入一个字符串然后回车表示结束。因为用户在输入的过程中长度是不确定的&#xff0c;所以要求自己使用的循环写的更好。在这里自己写了一个代码&#xff0c;效率不高&#xff0c;相对来说如果能模拟出C中的vector向量可能会好一些。 1 #include <stdio.h>2 #include…

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

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

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

在和女生约会的全过程中&#xff0c;女生的思绪通常都较为细致&#xff0c;1个目光、1个行为、1个中停……都将会蕴含了無限的含意&#xff0c;男生们假如愿意取得成功将女生追到手&#xff0c;很必须剖析一下下女生约会心里都想干什么&#xff0c;女生约会举动代表什么意思&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缓存的分析也算是老生常谈了&#xff0c;每隔一段时间就会冒出一篇不错的文章&#xff0c;其原理也是各大公司面试时几乎必考的问题。 之所以还写一篇这样的文章&#xff0c;是因为近期都在搞新技术&#xff0c;想“回归”下基础&#xff0c;也希望尽量总结的更…

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

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

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

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

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

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

uniapp接收服务器消息,【教程】uniapp websocket实现消息推送

部分开发者在使用uniapp的过程中会用到websocket&#xff0c;但是uniapp框架提供的websocket服务并不是尽善尽美。我在这里为大家介绍一款第三方的websocket推送服务&#xff1a;GoEasy&#xff0c;完美支持uniapp。目前GoEasy提供完整的websocket前后端解决方案&#xff0c;简…

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

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

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

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

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

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

计算机有新的更新,现在是2018年,我的电脑最近总是弹出说有重要更新,提示自2017年5月9日后,microsoft - Microsoft Community...

您好&#xff0c;了解到您在更新系统时遇到问题。目前使用的版本是比较靠前的版本吗&#xff1f;要求进行更新的是Windows 10 1709 吧&#xff1f;您可以尝试使用Media Creation Tool创建ISO介质&#xff0c;并使用该介质进行升级安装&#xff0c;看下效果&#xff1a;https://…

配置java编译环境

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

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

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