多协议、性能稳定、丰富API的流媒体服务器软件
您现在的位置:首页  >  文档  >  性能

我们的技术团队对Ti Top Streamer的性能做了严格的测试,从而得出了在各种硬件条件下、各个场景的测试数据。

一、先说一下基本结论:

Ti Top Streamer是一个性能卓越、可靠、稳定的流媒体服务器软件产品,其性能可以满足各种大并发、2K、4K等场景的业务需求,对物理内存占用极低。

注:经过我们对比测试,在CPU资源占用的表现上,Ti Top Streamer的表现略逊色于SRS 3.0。 主要是因为Ti Top Streamer 有更多的业务逻辑处理,以及相关管理功能。毕竟Ti Top Streamer是直接面向商业客户的商业产品。这一点,只要看看我们的管理界面和SRS的界面就会明白。

二、我们是如何测试的?

答案是:用Ti Top Streamer 测试 Ti Top Streamer!此外,用了一些nodejs脚本工具做为补充。对此,稍微做一点解释:

Ti Top Streamer 有丰富的HTTP API,用这些API可以创建大并发任务,举个简单的例子,假设测试500路rtmp流推送到Ti Top Streamer,你只需要用API给另一个Ti Top Streamer 创建500个转发任务, 转发的目的地址是你当前要测试的这台Ti Top Streamer!

调用这些API的脚本工具,你可以用任何语言去实现,我们采用了nodejs语言。它很简单,基本上,一个场景下的测试,用100来行nodejs代码就可以完成。

三、各个场景下的测试数据:

我们知道,流媒体服务器,有各种不同的应用场景。在不同场景下,业务流程不同,配置参数不同,这些势必会影响测试数据。比如是否启用HLS切片以及切片的长度,就会影响CPU和内存占用,而视频流的码率大小也会影响CPU和内存占用。

所以,首先要区分一下测试的技术场景:


RTMP流的输入,有两种方式,1)外部系统主动发起,用RTMP协议将流推送给Ti Top Streamer。2) Ti Top Streamer主动发起,根据一个RTMP URL从外部拉取这个RTMP流。

这两种方式下,对CPU、内存的消耗是一样的吗?是的。经过测试,两者几乎完全一样,差别只有1%左右,可以忽略不计。道理也简单,因为它们的区别只是信令发起方不一样(仅限于测试开始后的第一秒),其它环节完全一样。

在这个场景下,我们分别测试了启用HLS内存切片和不启用HLS内存切片,以及750Kbps码率和4Mbps码率的几种情况:

我们先来看最低硬件配置(2核4G内存)下的测试数据,见下表:

服务器硬件配置: 阿里云ecs.sn1ne.large (2核Intel 2.5GHz 4G内存 1Gbps网络带宽) CentOS7.4 64位系统
测试目标:验证Ti Top Streamer支持的并发RTMP输入流数量
测试方法:并发向Ti Top Streamer推rtmp流,测试时间:5分钟
启用HLS内存切片: 否
视频编码参数: 750Kbps 512*288 H.264/AAC
输入流数量CPU占用率内存占用率5分钟系统平均负荷流入数据比特率均值
50路11%~15%0.8%0.2737Mbps
100路20%~26%1.3%0.6574Mbps
150路31%~39%1.7%0.93112Mbps
200路46%~53%2.1%0.95148Mbps
300路68%~76%3.2%1.36224Mbps

注意:在我们所有的测试数据中,CPU占用率都不会超过80%,也就说,为了得到稳定而可靠的运行数据,我们不考虑CPU占用达到80%以上的情况。本文所有数据都采用了这个原则,下面不再赘述。

接下来,我们看看启用HLS内存切片后,资源占用会上升多少?

服务器硬件配置: 阿里云ecs.sn1ne.large (2核Intel 2.5GHz 4G内存 1Gbps网络带宽) CentOS7.4 64位系统
测试目标:验证Ti Top Streamer支持的并发RTMP输入流数量
测试方法:并发向Ti Top Streamer推rtmp流,测试时间:5分钟
启用HLS内存切片: 是 (最大切片时长4秒,内存里保留最近的3个切片)
视频编码参数: 750Kbps 512*288 H.264/AAC
输入流数量CPU占用率内存占用率5分钟系统平均负荷流入数据比特率均值
50路14%~16%5.6%0.2837Mbps
100路25%~31%10.8%0.4974Mbps
150路38%~46%16.4%0.99112Mbps
200路53%~60%20.9%1.12148Mbps
250路68%~76%23.5%1.41186Mbps

注意:Ti Top Streamer在内存使用上,采用了Cache技术,也就是说会根据业务层面对内存的实际使用,动态地划定一个Cache范围,上面的内存数据实际是这个Cache的大小,真正业务层面使用的内存不到它的1/2。并且Cache的大小会依据业务情况动态调整。

接下来,我们再看看视频平均码率为4Mbps的情况(还是先禁用HLS内存切片),如下:

服务器硬件配置: 阿里云ecs.sn1ne.large (2核Intel 2.5GHz 4G内存 1Gbps网络带宽) CentOS7.4 64位系统
测试目标:验证Ti Top Streamer支持的并发RTMP输入流数量
测试方法:并发向Ti Top Streamer推rtmp流,测试时间:5分钟
启用HLS内存切片: 否
视频编码参数: 4Mbps 1920*1080 H.264/AAC
输入流数量CPU占用率内存占用率5分钟系统平均负荷流入数据比特率均值
50路50%~54%1.6%0.98200Mbps
70路68%~77%1.8%1.22280Mbps

接下来,我们再看看启用HLS内存切片后,资源占用会上升多少?

服务器硬件配置: 阿里云ecs.sn1ne.large (2核Intel 2.5GHz 4G内存 1Gbps网络带宽) CentOS7.4 64位系统
测试目标:验证Ti Top Streamer支持的并发RTMP输入流数量
测试方法:并发向Ti Top Streamer推rtmp流,测试时间:5分钟
启用HLS内存切片: 是 (最大切片时长4秒,内存里保留最近的3个切片)
视频编码参数: 4Mbps 1920*1080 H.264/AAC
输入流数量CPU占用率内存占用率5分钟系统平均负荷流入数据比特率均值
50路55%~61%23%1.02200Mbps
65路72%~77%30%1.26260Mbps


从上面的数据看,在最低的硬件配置下(2核4G内存),Ti Top Streamer的性能表现还是很优秀的!



下面,我们把硬件配置上升一倍(4核8G内存),做同样的测试,看看Ti Top Streamer的表现如何:

服务器硬件配置: 阿里云ecs.sn1.large (4核Intel 2.5GHz 8G内存 1Gbps网络带宽) CentOS7.4 64位系统
测试目标:验证Ti Top Streamer支持的并发RTMP输入流数量
测试方法:并发向Ti Top Streamer推rtmp流,测试时间:5分钟
启用HLS内存切片: 否
视频编码参数: 750Kbps 512*288 H.264/AAC
输入流数量CPU占用率内存占用率5分钟系统平均负荷流入数据比特率均值
50路7%~9%0.4%0.3137Mbps
100路13%~17%0.6%0.5374Mbps
200路30%~33%1.0%1.22148Mbps
300路39%~52%1.4%1.54186Mbps
400路58%~68%1.8%1.87296Mbps
500路69%~79%2.1%2.32370Mbps

接下来,我们看看启用HLS内存切片后,资源占用会上升多少?

服务器硬件配置: 阿里云ecs.sn1.large (4核Intel 2.5GHz 8G内存 1Gbps网络带宽) CentOS7.4 64位系统
测试目标:验证Ti Top Streamer支持的并发RTMP输入流数量
测试方法:并发向Ti Top Streamer推rtmp流,测试时间:5分钟
启用HLS内存切片: 是 (最大切片时长4秒,内存里保留最近的3个切片)
视频编码参数: 750Kbps 512*288 H.264/AAC
输入流数量CPU占用率内存占用率5分钟系统平均负荷流入数据比特率均值
50路8%~11%2.3%0.3537Mbps
100路17%~20%5.2%0.6374Mbps
200路33%~39%10.4%1.34148Mbps
300路48%~57%15.5%1.78186Mbps
400路70%~75%23.5%2.25296Mbps
420路72%~78%26%2.58315Mbps

接下来,我们再看看视频平均码率为4Mbps的情况(还是先禁用HLS内存切片),如下:

服务器硬件配置: 阿里云ecs.sn1.large (4核Intel 2.5GHz 8G内存 1Gbps网络带宽) CentOS7.4 64位系统
测试目标:验证Ti Top Streamer支持的并发RTMP输入流数量
测试方法:并发向Ti Top Streamer推rtmp流,测试时间:5分钟
启用HLS内存切片: 否
视频编码参数: 4Mbps 1920*1080 H.264/AAC
输入流数量CPU占用率内存占用率5分钟系统平均负荷流入数据比特率均值
50路32%~35%0.7%0.98200Mbps
70路44%~49%0.8%1.23280Mbps
100路63%~72%1.1%2.28400Mbps
110路71%~78%1.2%2.45440Mbps

接下来,我们看看启用HLS内存切片后,资源占用会上升多少?

服务器硬件配置: 阿里云ecs.sn1.large (4核Intel 2.5GHz 8G内存 1Gbps网络带宽) CentOS7.4 64位系统
测试目标:验证Ti Top Streamer支持的并发RTMP输入流数量
测试方法:并发向Ti Top Streamer推rtmp流,测试时间:5分钟
启用HLS内存切片: 是 (最大切片时长4秒,内存里保留最近的3个切片)
视频编码参数: 4Mbps 1920*1080 H.264/AAC
输入流数量CPU占用率内存占用率5分钟系统平均负荷流入数据比特率均值
50路36%~39%12.0%0.99200Mbps
70路48%~56%15.1%1.34280Mbps
100路69%~78%24.0%2.51400Mbps

以上,我们完成了对RTMP输入的测试,在最常见的低端硬件配置下(4核8G内存),Ti Top Streamer的性能表现达到了业界一流水平!

我们也总结了一点规律:

1). 启用HLS内存切片确实会显著增加对内存的占用,毕竟需要在内存中保存切片数据。但相对于我们常见的大内存服务器来说,这点内存占用微不足道。

2). 视频码率增大时,CPU占用率会有所提升,但提升的幅度有限。从750kbps到4Mbps,CPU占用率在原来的基础上只上升了不到10%。

3). 服务器硬件配置提升1倍后,支持的业务量,并不会跟着提升1倍,而只是提升了0.8倍左右。这个情况也可以理解,属于正常情况。