各种流媒体服务器性能测试

  今天正好有80Gbps的万兆网络环境,写了一个压力测试工具,对比了一下各种流媒体服务器,在超级并发下的性能如何,原来听说intel的万兆网卡有问题,只能跑到不到的理论带宽,这点我测试过了,用intel最新的驱动,centos6,最次能跑到80%的理论带宽,最高能跑到95%以上,完全没有问题,需要注意的是nginx 采用异步架构,因为rtmp协议实际上损失了部分性能,实际上http的性能比这个更高。http跑到过72Gbps,带宽的90%。

nginx-rtmp做edge的配置: 

  1. rtmp {

  2. server {

  3. listen 1935;

  4. application edge{

  5. live on;

  6. pull rtmp://127.0.0.1:2935/live;

  7. }

  8. }

  9. }

 

也就是说,源站的播放地址是:rtmp://192.168.1.50:2935/live/livestream,而边缘的播放地址是:rtmp://192.168.1.50:1935/edge/livestream

Wowza2的配置: 

  1. 修改:/usr/local/WowzaMediaServer/bin/startup.sh

  2. 多分配内存,否则无法支持8k连接:-Xms2024m -Xmx6048m

  3. java -server -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote=true -Xms2024m -Xmx13048m -Dcom.wowza.wms.AppHome=/usr/local/WowzaMediaServer -Dcom.wowza.wms.ConfigURL= -Dcom.wowza.wms.ConfigHome=/usr/local/WowzaMediaServer -cp /usr/local/WowzaMediaServer/bin/wms-bootstrap.jar com.wowza.wms.bootstrap.Bootstrap start

  4.  

  5. 修改Ping超时设置:

  6. /usr/local/WowzaMediaServer/conf/live/Application.xml

  7. <ApplicationTimeout>60000000</ApplicationTimeout>

  8. <PingTimeout>12000000</PingTimeout>

Wowza3的配置: 

  1. 修改:/usr/local/WowzaMediaServer/bin/startup.sh

  2. 多分配内存,否则无法支持8k连接:-Xms2024m -Xmx6048m

  3. $_EXECJAVA -server -Xms2024m -Xmx13048m -Djava.net.preferIPv4Stack=true $JMXOPTIONS -Dcom.wowza.wms.runmode="$mode" -Dcom.wowza.wms.native.base="linux" -Dcom.wowza.wms.AppHome="$WMSAPP_HOME" -Dcom.wowza.wms.ConfigURL="$WMSCONFIG_URL" -Dcom.wowza.wms.ConfigHome="$WMSCONFIG_HOME" -cp $WMSAPP_HOME/bin/wms-bootstrap.jar com.wowza.wms.bootstrap.Bootstrap start

  4.  

  5. 修改Ping超时设置:

  6. /usr/local/WowzaMediaServer/conf/live/Application.xml

  7. <ApplicationTimeout>60000000</ApplicationTimeout>

  8. <PingTimeout>12000000</PingTimeout>


测试数据如下。 

Test 5k Clients

5.5k的数据如下:

 

RTMP 900kbps 5k Clients
 Wowza2Wowza3SmartServerNginxRtmp(Origin)NginxRtmp(Edge)
CPU663.9%1247.5%494%310%425%
Mem1GB6.7GB118MB216MB244MB
Load3.9926.534.063.334.77
Process11888
Threads242242888
Bandwidth Required4.68Gbps4.68Gbps4.68Gbps4.68Gbps4.68Gbps
Bandwidth Actual4.14Gbps4.2Gbps4.5Gbps4.9Gbps4.9Gbps
Connections51685203520152045202
Client-Load5.6826.533.707.7410.94
FlashPlay(Win7) delay7s-s1.2s3s1s
Architecturejava, 
single-process, 
multiple-thread
java, 
single-process, 
multiple-thread
c++/st, 
multiple-process, 
single-thread,
async-socket
c, 
multiple-process, 
single-thread,
async-socket
c, 
multiple-process,
single-thread,
async-socket

 

比起Wowza2,后者的效率高20%,内存使用只有10%,延迟极佳。wowza3的CPU/Mem/Load就是一坨屎。

Test 8k Clients

8k连接的数据如下:

 

 

 

RTMP 900kbps 8k Clients
 Wowza2Wowza3SmartServerNginxRtmp(Origin)NginxRtmp(Edge)
CPU811.6%1472.3%813.7%488%575%
Mem5GB10GB188MB254MB307MB
Load5.5529.167.185.535.08
Process111288
Threads2422421288
Bandwidth Required7.2Gbps7.2Gbps7.2Gbps7.2Gbps7.2Gbps
Bandwidth Actual6.5Gbps3.6Gbps7.6Gbps7.6Gbps7.5Gbps
Connections80038003800180048002
Client-Load13.312.7312.0517.8117.94
FlashPlay(Win7) delay14s-s1s4s1.7s
Architecturejava, 
single-process, 
multiple-thread
java, 
single-process, 
multiple-thread
c++/st, 
multiple-process, 
single-thread,
async-socket
c, 
multiple-process, 
single-thread,
async-socket
c, 
multiple-process,
single-thread,
async-socket

比起Wowza2,后者的内存使用只有0.5%,延迟极佳。Wowza3跑不到8k。

 

 

Test 12k Clients

12k连接的数据如下,12k左右时带宽需要达到10Gbps:

 

RTMP 900kbps 12k Clients
 Wowza2Wowza3SmartServerNginxRtmp(Origin)NginxRtmp(Edge)
CPU1743.1%不支持864.7%487%378%
Mem11GB不支持1.7GB342MB378MB
Load13不支持3.394.353.96
Process111788
Threads2422421788
Bandwidth Required10Gbps不支持9.9Gbps10Gbps10Gbps
Bandwidth Actual7.4Gbps不支持10.1Gbps8.5Gbps8.48Gbps
Connections12002不支持112451200411960
Client-Load3不支持29.9430.4730.29
FlashPlay(Win7) delayNaN
(客户端
直接卡死)
不支持1.7s3s1.3s
Architecturejava, 
single-process, 
multiple-thread
java, 
single-process, 
multiple-thread
c++/st, 
multiple-process, 
single-thread,
async-socket
c, 
multiple-process, 
single-thread,
async-socket
c, 
multiple-process,
single-thread,
async-socket

 

可见,wowza2/3根本就无法达到10Gbps,尽管在80Gbps带宽中也达不到(http可是能到72Gbps)。而nginx同源架构的rtmp服务器,也能到10Gbps。

因为客户端负载过高(29.9),所以无法继续开更多客户端测试,服务器的负载还很低,还可以开启更多的客户端。

其他因素

除了性能之外,网络服务器需要考虑的因素包括:

 

其他对比
 Wowza2SmartServerNginxRtmp
集群Origin+EdgeEdgeOrigin+Edge
主备不支持支持不支持
直播转码支持不支持支持
HLS支持不支持支持
可维护性容易容易很难
监控数据不支持支持不支持
HTTP接口不支持不支持支持
Reload不支持支持支持
带宽检测不支持支持不支持
极简配置不支持支持部分支持
(Edge回源时
必须指定app)

 

理论上,nginx或者st这种架构,为网络服务器的最优架构。

多进程+单线程+异步socket+HTTP===超级网络服务器(nginx)。

多进程+单线程+异步socket+Rtmp===超级RTMP服务器(nginx-rtmp/SmartServer)。

转载于:https://www.cnblogs.com/fuland/p/3709540.html

我们进行了对云视睿博的高性能流媒体服务器NTV Media Server G3进行性能测试测试工具采用了中科院某所开发的视频播出压力测试工具http_loader,这款工具可以模拟终端用户播放行为,对视频服务器进行大并发压力测试。 在测试中,我们使用了一个80Gbps的万兆网络环境,并写了一个压力测试工具。我们对比了多种流媒体服务器在超级并发下的性能。在测试中,我们发现使用intel的万兆网卡,并使用最新的驱动和centos6操作系统,服务器性能表现非常出色。我们的测试结果显示,服务器的实际带宽可以达到理论带宽的80%至95%以上。需要注意的是,由于rtmp协议的特性,实际上会有部分性能损失,而使用http协议的性能更高。我们的测试结果显示,http协议的性能可以达到72Gbps,带宽的90%。我们还使用了nginx-rtmp做edge的配置,以进一步优化性能。 综上所述,我们的性能测试结果显示,云视睿博的高性能流媒体服务器NTV Media Server G3在超级并发下表现出色,可以提供稳定高效的流媒体服务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [NTV Media Server G3性能测试](https://blog.youkuaiyun.com/SE_JW/article/details/89484225)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [各种流媒体服务器性能测试](https://blog.youkuaiyun.com/weixin_30915951/article/details/99952572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值