直播 APP 后端性能测试思路
⼀、概述
直播 APP 场景中通常包含主播(+辅麦主播)、粉丝 2个主要⾓⾊ 主播主要的交互以推流为主,粉丝主要的交互以拉流为主
另外包括粉丝与主播之间的互动,⽂本消息、表情、送礼物
直播的中的⽤户核⼼性能体验为:主播与粉丝之间的交互延迟,⽽推流是直播第⼀步,如果推流不稳定,⽆论如何优化体验都会⾮常差。⼆、性能需求 关键⾓⾊性能体验
⽤户视⾓第⼀个画⾯加载延迟(⾸次缓冲)、直播画⾯延迟、卡顿、弱⽹体验、流量消耗
运维视⾓CDN、带宽开销、核⼼业务的横向扩容能⼒、(政策原因)对流媒体进⾏存储产⽣的存储空间开销
开发视⾓延迟和卡顿的平衡(客户端缓存)
运营视⾓/
三、测试实现
1)通讯协议
推、拉流的通讯
⽹络层:Socket 或 St 负责传输
协议层:RTMP 或 HLS 负责⽹络打包(主播连麦:WebRTC)
封装层:flv、ts 负责解码数据封装
编码层:h.264、acc 负责图像、⾳频压缩
⾮推、拉流的通讯
HTTP、WebSocket
2)测试⼯具
⼯具⽀持协议说明
St-load RTMP(Linux)通过模拟并发的推拉流实现特定负载的测试 Locust⾃带 HTTP Client,其它协议需⾃⾏实现 Client采⽤(单进程)协程+IO复⽤实现并发负载
四、测试策略
说明:直播类压测的核⼼是验证并发下推、拉流的顺畅,是协议层的测试。⽤户体验的关键是和主播之间的交互延迟。
1)核⼼⾓⾊与业务
主播 - 直播 - 抓流/推流
主播 - 互动 - 查看/回应粉丝的互动
粉丝 - 直播 - 切换直播间
粉丝 - 直播 - 拉流
粉丝 - 互动 - 评论、打赏等互动⾏为
2)测试⽤例编写参考
参考上条,略
3)测试场景设计关注点
1、性能基准
建⽴性能基准
对并发推流进⾏测试
对并发拉流进⾏测试
对粉丝进⼊直播间的⾸次缓冲延迟(包括:⾸包⽤时延迟、视频⾸帧延迟)进⾏测试
对特定的码率、帧率所对应带宽开销进⾏测试
对并发进⼊直播间时的内容交互加载延迟进⾏测试
直播间中的主播与粉丝交互延迟
对弱⽹环境进⾏不同程度的并发测试
2、负载测试
关注⽇度业务峰值负载(业务量、时间、时长)
关注周/⽉中业务峰值负载(业务量、时间、时长)
关注运营推⼴过程中所涉及的业务负载(业务量、时间、时长)
关注意外负载的出现时机、负载特点
3、容量测试
基于“性能基准”结果,参考:1000 - 2000 - 3000 - XXXX 的⽅式进⾏主播递增推流测试
关注良好性能体验条件下的最⾼⽀持在线主播数量
关注可容忍上限条件下的最⾼⽀持在线主播数量
关注系统资源充裕条件下的最⾼在线主播数量
关注系统资源不⾜条件下的最⾼在线主播数量
4、可⽤性测试
以施加峰值负载的⽅式达到考核时间周期的业务量
5、可靠性测试
关注⽹络异常 / 弱⽹环境对性能基准的影响
关注服务异常对性能基准的影响
关注冗余节点随机的上、下线对性能基准的影响
关注冗余节点随机的上、下线对:功能可⽤性、事务性、性能、持久化设计的影响
6、资源规划 / 扩容配置
关注核⼼业务在性能上横向扩容过程中,节点增加与性能削减的关系
关注主播推流对服务产⽣的存储空间占⽤开销
关注主播推流对服务产⽣的带宽占⽤开销
4)测试场景设计
(参考产品设计与“测试场景设计关注点”:略)
测试场景场景描述场景⽬标执⾏策略期望结果
性能基准测试
负载测试(推、拉流)
负载测试(HTTP、WS流)
容量测试
可⽤性测试
可靠性测试
…
…
五、备注
脚本需要实现粉丝端⾸次缓冲时间的延迟测试,即对⾸包、⾸帧画⾯的断⾔、延迟、丢帧判断测试。