直播的火爆带来了海量的用户,也带来了海量的服务器并发。本文分析了目前直播行业存在的难点,从腾讯目前的新直播产品——NOW直播出发,了解直播应用背后的那些事。
直播,突然成为了中国互联网的一个最流行的词汇。在《2016-2020年中国网络直播行业深度调研及投资前景预测报告》中的数据表示,2015年,全国在线直播平台数量接近200家,其中网络直播的市场规模约为90亿,网络直播平台用户数量已经达到2亿,大型直播平台每日高峰时段同时在线人数接近400万,同时直播的房间数量超过3000个,更可怕的是,这一数据还在以极快的速度向上攀升。
直播火没火,看用户就知道,但是直播有没有前景,就要看科技巨头们对它的态度了。
国内方面,斗鱼、虎牙、熊猫、龙珠、奇秀、花椒等专业的直播平台如雨后春笋般出现。阿里、百度、腾讯等巨头也不甘人后,纷纷推出了自己的直播平台。而直播所涉及的行业领域也从电竞、社交、电商等各个行业间开始广泛出现。
如此大的用户体量下,直播类的应用对于服务器的要求要高过一般的应用,我们来看看直播类的应用对服务器有哪些更多的挑战?
1、更大的数据量
视频数据和文本数据完全是两个量级的概念,假设一个直播房间有5000人,视频1s的数据60K,那么就需要5000*60=300000KB=292.97MB,基本已经达到了2-3三个手游的大小了,而这只是一个房间产生的流量。今年4月刘涛入驻直播领域,创造了同时在线人数17万,总收看人数71万的数据,如果按照这个数量,服务器就会产生9.73Gbps的带宽,而当前某著名网络直播APP日活跃用户超过了800W,服务器将承受458Gbps的带宽压力。
2、更高的并发量
直播应用与普通应用相比,交互的功能异常多,除了直播视频流的服务器压力之外,还要包括用户消息推送、聊天、礼物、支付以及统计系统带来的数据交互压力,服务器进行需要识别不同的业务字段,才能精确判定用户的行为是否成功完成,从交互频率的角度上来说,直播类的应用,与其说更像应用,不如说更像游戏。
4、更低的延迟
首先,我们要买一个服务器。买多大的服务器呢?服务器的带宽要满足直播应用的带宽需求,在这里,科普一下带宽是怎么看的:带宽通常使用的单位是bps(bitspersecond),8bits通常等于1Byte,100Mbps在换算成我们熟悉的文件大小的时候,要除以8,也就是在100Mbps的带宽下,每秒钟可以下载12.5MB的文件,那么一般来说,直播应用需要多少带宽呢?见下图:直播应用一般使用的分辨率是360p,720p以及1080p三种,为了看得清晰一些,一般人们都会选择720p,那么在720p的清晰度下,直播应用需要1024kbps的带宽,也就是每秒传递的数据大小为1024/8=128KB。简单来说,如果在APP中打开直播,使用了720p的分辨率,一个用户每秒钟需要传输128KB的数据(当然实际情况中直播应用还有消息推送,送礼,支付等行为,直播画面分辨率、压缩比等区别,实际会消耗更多的数据)。
那么,直播类应用现在需要承载多少用户呢?以目前最红火的几大直播平台为例,斗鱼TV的在线人数可以超过1000万,战旗TV在在线人数约500万左右,龙珠在线人数约400万左右,虎牙在线人数约100万,直播平台的带宽成本通常是带宽峰值月结的形式,如果当月最高同时在线人数是200W,也就是每秒要传输的数据量高达244GB,那么理论上消耗的带宽就是2T左右,一个月的开销就在4000W人民币左右。
对于直播应用来说,服务器最难处理的环节就是视频流量和用户交互等高频率高带宽的场景,用户的行为是难以预测的,经常会出现突发性的暴涨,一般在进行活动的时候,流量可能是平时的几十倍。2016年7月11日,PAPI酱的一次直播带来了超过2000W用户的访问,这对于大多数的直播应用来说,服务器的成本都是难以承担的。这也是为什么越来越多的直播应用开始寻求云服务器的支持,目前的云服务商有腾讯云,阿里云,百度云,金山云等,彼此之间在硬件上的类型差别越来越小。
因此直播应用在上线前需要对多样化的用户操作进行针对性的测试,注册,聊天,礼物,支付等行为都需要进行不同接口的测试,NOW直播就是其中之一。
测试需求的产生
测试前的思路梳理
测试的执行
1、单接口压测——步步为营,逐渐迭代
单接口压测的原理很简单,就是不断的对某个功能接口不断加压,直到发现出现问题的那个极限就可以,在腾讯WeTest服务器性能测试上,操作如下:1)点击压测产品首页中的快捷入口:HTTP直压。模式选择简单模式,名称和描述可以自己填写。(图中示例起始人数50人,每隔60秒增加50人,加到200人为上限)2)新建一个客户端请求,接口压测包括读写接口,读接口基本是GET请求,写接口基本是POST请求。GET请求使用url请求参数,POST请求使用x-www-form-urlencoded方式传递参数,在这里NOW直播方法选择GET,填写想要测试的URL。3)编辑一下测试模型,增加一个场景名,单接口测试只测试一个功能接口,因此模式选择“单场景”,压力百分比设置为100%。通过这样的压测方式,不断增加服务器压力,直到找到瓶颈位置,腾讯WeTest为NOW直播实现了2W/s的并发量,满足了NOW直播的并发需求。
2、多接口压测——真实模拟,定位问题
多接口压测的主要逻辑,就是通过构建不同的功能接口,模拟用户的真实行为,从而帮助开发者定位接口问题。
NOW直播测试团队读接口基本是GET请求,写接口基本是POST请求。GET请求使用url请求参数,POST请求使用x-www-form-urlencoded方式传递参数。
(在腾讯WeTest服务器性能测试上,我们可以进行如下操作:)
通过NOW直播与腾讯WeTest在服务器性能测试方面的合作可以看出,目前的直播应用非常注重两块的内容:一个是单接口的承载能力,一个是多接口的架构情况,对于开发人员来说,前者的问题是好解决的,通过平行扩容的方式就可以做到优化,但是后者的问题则需要在多个功能接口之间不断定位问题,不断尝试新的压力测试,才能找到那个存在的隐患。基于NOW直播的需求,腾讯WeTest也提升了可同时调用的场景接口,从原来的4个增加到了8个,之后也会不断的增加;并且也不断的增加可以实现的并发数,为用户提供更大的并发压力和更真实的行为场景,节省了更多的测试成本。做好这些,才能做出更好的直播应用。
腾讯WeTest运用了沉淀十多年的内部实践经验总结,通过基于真实业务场景和用户行为进行压力测试,帮助游戏开发者发现服务器端的性能瓶颈,进行针对性的性能调优,降低服务器采购和维护成本,提高用户留存和转化率。