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

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

采用异步架构,因为rtmp协议实际上损失了部分性能,实际上http的性能比这个更高。http跑到过72Gbps,带宽的90%。

nginx-rtmp做edge的配置:

rtmp {

server {

listen 1935;

application edge{

live on;

pull rtmp://127.0.0.1:2935/live;

}

}

}

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

Wowza2的配置:

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

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

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

修改Ping超时设置:

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

60000000

12000000

Wowza3的配置:

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

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

$_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

修改Ping超时设置:

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

60000000

12000000

测试数据如下。

Test 5k Clients

5.5k的数据如下:

RTMP 900kbps 5k Clients

Wowza2

Wowza3

SmartServer

NginxRtmp(Origin)

NginxRtmp(Edge)

CPU

663.9%

1247.5%

494%

310%

425%

Mem

1GB

6.7GB

118MB

216MB

244MB

Load

3.99

26.53

4.06

3.33

4.77

Process

1

1

8

8

8

Threads

242

242

8

8

8

Bandwidth Required

4.68Gbps

4.68Gbps

4.68Gbps

4.68Gbps

4.68Gbps

Bandwidth Actual

4.14Gbps

4.2Gbps

4.5Gbps

4.9Gbps

4.9Gbps

Connections

5168

5203

5201

5204

5202

Client-Load

5.68

26.53

3.70

7.74

10.94

FlashPlay(Win7) delay

7s

-s

1.2s

3s

1s

Architecture

java,

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

Wowza2

Wowza3

SmartServer

NginxRtmp(Origin)

NginxRtmp(Edge)

CPU

811.6%

1472.3%

813.7%

488%

575%

Mem

5GB

10GB

188MB

254MB

307MB

Load

5.55

29.16

7.18

5.53

5.08

Process

1

1

12

8

8

Threads

242

242

12

8

8

Bandwidth Required

7.2Gbps

7.2Gbps

7.2Gbps

7.2Gbps

7.2Gbps

Bandwidth Actual

6.5Gbps

3.6Gbps

7.6Gbps

7.6Gbps

7.5Gbps

Connections

8003

8003

8001

8004

8002

Client-Load

13.31

2.73

12.05

17.81

17.94

FlashPlay(Win7) delay

14s

-s

1s

4s

1.7s

Architecture

java,

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

Wowza2

Wowza3

SmartServer

NginxRtmp(Origin)

NginxRtmp(Edge)

CPU

1743.1%

不支持

864.7%

487%

378%

Mem

11GB

不支持

1.7GB

342MB

378MB

Load

13

不支持

3.39

4.35

3.96

Process

1

1

17

8

8

Threads

242

242

17

8

8

Bandwidth Required

10Gbps

不支持

9.9Gbps

10Gbps

10Gbps

Bandwidth Actual

7.4Gbps

不支持

10.1Gbps

8.5Gbps

8.48Gbps

Connections

12002

不支持

11245

12004

11960

Client-Load

3

不支持

29.94

30.47

30.29

FlashPlay(Win7) delay

NaN

(客户端

直接卡死)

不支持

1.7s

3s

1.3s

Architecture

java,

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),所以无法继续开更多客户端测试,服务器的负载还很低,还可以开启更多的客户端。

其他因素

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

其他对比

Wowza2

SmartServer

NginxRtmp

集群

Origin+Edge

Edge

Origin+Edge

主备

不支持

支持

不支持

直播转码

支持

不支持

支持

HLS

支持

不支持

支持

可维护性

容易

容易

很难

监控数据

不支持

支持

不支持

HTTP接口

不支持

不支持

支持

Reload

不支持

支持

支持

带宽检测

不支持

支持

不支持

极简配置

不支持

支持

部分支持

(Edge回源时

必须指定app)

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

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

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

原文:http://www.cnblogs.com/fuland/p/3709540.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值