如何对流媒体RTMP/HLS协议进行性能测试?(二)
流媒体压力测试流媒体的压测测试主要是通过模拟海量用户访问直播点播的场景,关注于服务器是否能够在高并发时间段稳定运行,在播放视频时不出现卡顿、花屏等问题影响用户观看体验,以及是否可以及时响应秒开视频等。视频卡顿主要有2个大方面的因素:
1) 外因,客户端的设备配置太差,对应的硬件来不及处理数据,或者对应的软件版本太低,这样只能是升级硬件以及更新版本。另一个是网络太差,随着网络通信的快速发展,对数据传输的要求也随之增加,在数据来不及发送客户端出现了等待数据的情况,也会导致视频卡顿;
2) 内因,流本身出现了音视频时间戳不同步,流对应的参数不正确导致的视频卡顿。另外,通过视频首帧用时和首包用时可以客观的量化用户的观看体验,这些都是流媒体进行压力测试需要主要关注的问题。
视频出现花屏的主要可能:
1) 丢失了关键帧或者没有从关键帧开始解码。对于H.264码流来说,分为I、B、和P三中类型的帧,其中I帧为关键帧,可以独立的解码播放,B 帧是双向预测内插编码帧,丢失了I帧和后面的P帧,则会解码失败,P 帧是前向预测编码帧,丢失了前面的I、B、P帧也会导致解码失败。对于此类的解码失败一般就会出现花屏的现象。
2) 图像格式的转换不正确,例如横屏播放变成了竖屏播放,拉流端图像尺寸发生了变化需要重置对应的×××,否则容易出现花屏。
3) 渲染出现了脏数据,主要就是还没有完成渲染的数据被送到了编码器编码,导致图像错位,或者撕裂等。那么验证流媒体服务器的性能,保障流媒体的质量显的尤其重要。我们在网络上搜索流媒体压力测试时能看到基于srs-librtmp实现的srs-bench的开源工具,但是该工具在进行压力测试时看到的性能指标有限,只有数据包的时间长度和对应的大小和等待时间,这个无法客观的体现用户体验,并且该工具无法满足chunked的方式,测试场景受到很大的限制。而华为云性能测试服务(CPTS)针对以上场景,针对以上测试场景的诉求,增强支持了可以兼容HLS和RTMP的流媒体压测能力,可进行端到端的压力测试,压测业务流量如下图所示
https://img2018.cnblogs.com/blog/1573957/201904/1573957-20190423155919261-537000297.png
CPTS利用执行机模拟大量并发用户的客户端向CDN或者源站发起请求,模拟拉流操作,CDN或者源站在收到请求后,会将响应报文返回至CPTS压测执行机,以HLS协议点播为例,CPTS压测执行机通过对CDN或者源站发起请求,得到m3u8索引文件,按序请求下载获取每一段ts数据流。解析对应的ts流,实时计算视频的帧率、码率、首包用时和首帧用时,之后还将利用异步线程模拟播放流媒体文件,识别视频是否出现卡顿和花屏,模拟CDN或者源站在高压力场景下,客户端收到视频流在实际播放过程中是否会产生的问题。在视频场景上,支持点播和直播两种模式,并且大大丰富了针对视频播放的质量监控指标,可以动态获取视频压测时对应的视频首包用时、首帧用时、平均下载速度、码率、帧率、带宽等性能指标,下表为具体的流媒体性能测试指标,以及对应的参考值。性能测试指标
指标定义建议值
并发用户数在性能测试工具中,并发用户数一般被称为虚拟用户数。
丢包率丢包是网络中数据传输的时候出现数据丢失的现象,丢包率是指丢包数据占总传输数据的百分比。网络丢包率越高,网速越慢,一般丢包率小于1%属于正常。
平均下载速度指播放器播放视频过程中下载视频资源的速度。平均下载速度=总下载字节数/吞吐用时。优秀 >180 KB/s,一般 >70 KB/s,差 ≤ 70KB/s
视频首包用时从获取视频真实地址到获取视频资源第一包之间的时间间隔。优秀 ≤1s,一般 ≤2.5s,差 >2.5s
视频首帧用时从获取视频真实地址到开始播放视频第一帧之间的时间间隔。其中视频秒开指视频页面首屏在1s左右快速的展现出来,视频秒开直接影响用户体验。优秀 ≤1s
平均帧率帧率用于测量显示帧数的量度,单位为每秒显示帧数(FPS)卡顿 < 24FPS
卡顿率即将支持
花屏检测即将支持
实测效果下面我们利用CPTS对流媒体服务器进行压力测试,模拟200个用户同时观看直播对流媒体服务器带来的压力。
下图为对应的实时报告,首先查看是否存在错误信息,可以看到当200个用户对服务器进行并发访问时,存在12次的连接错误,说明服务端在当前压力下无法正常处理HLS直播链接,会导致这部分用户无法打开视频。
https://img2018.cnblogs.com/blog/1573957/201904/1573957-20190423160136715-1901907354.png
由上图可以看出该场景下,视频平均帧率为24fps,这是由于测试桩固定帧率为24fps,一般在视频的性能测试中,如果帧率小与24fps时用户能感知到视频卡顿;通过平均首包用时和平均首帧用时客观体现用户体验,如果平均首包用时小于1s,用户体验感较好;该测试结果为1.09s大于1s,用户体验一般;如果平均首帧用时小于1s时,用户体验感好,该测试结果为2.58s大于2.5秒,用户体验较差;因为码率的大小一定程度决定视频文件的清晰度、流畅度,码率越高,画质越好,所以测试报告中展现出码率的动态变化曲线;另外展示出上行带宽和下行带宽实时数据,查看网络状况。通过这些视频指标可快速对服务器能力进行评估。
页:
[1]